Hello,
The more severe limitation is with SVG, not D3. It varies per machine, but I'd say a reasonable upper limit for the number of SVG elements on the page at a time is around 10,000. This is around where animation gets choppy.
Canvas is much faster than SVG in terms of drawing graphical elements. I'd suggest to try writing some benchmarks with random graphs with many nodes using this Canvas-based example as a starting point:
Force Dragging III.
Rendering will probably be the performance bottleneck, not the algorithm itself. This is because the implementation of the force-directed layout algorithm in D3 has asymptotic running time of O(n log n) where n is the number of nodes (according to
manyBody.theta docs). I'm not clear though on the running time of the "links" part of the simulation (not specified in the
force.links docs).
It would be interesting to compare benchmarks with rendering and without rendering to find the real limits.
Best regards,
Curran