Performance Testing

Good day,

As suggested in this topic the user wanted to know how many nodes the diagram could support.

I have found in my testing the overview significantly degrades the end user experience for a large number of nodes and connectors.

Is there anything I can do to improve the performance of the of the overview and the diagram with large numbers of nodes, around 10k nodes and connectors?

I have included my sample code used for testing:

<!doctype html>

Performance Testing
Copy 10 times (30 elements) Copy 100 times (300 elements) Copy 1000 times (3000 elements) Copy 10000 times (30000 elements)
This text is displayed if your browser does not support the Canvas HTML element.
Save Load Diagram Model saved in JSON format:
{ "class": "go.GraphLinksModel", "linkFromPortIdProperty": "fromPort", "linkToPortIdProperty": "toPort", "nodeDataArray": [ {"category":"horizontal2port", "location":"-248.18021297454834 -2597.3509830470334", "text":"A 1", "key":0}, {"category":"horizontal2port", "location":"-154.18021297454834 -2523.8416080470333", "text":"B 1", "key":-9} ], "linkDataArray": [ {"category":"wire", "text":"Link B1 to A1", "from":-9, "to":0, "fromPort":"L", "toPort":"R"} ]}

Many thanks.

Jonathan

Well, that makes sense, since there’s a lot more to be drawn. But we haven’t done any performance optimizations for Overviews.

Are you saying the performance is fine when there is no Overview?

Let us consider if there are easy optimizations to be had.

Hi Walter,

Thanks for the quick response. Without the overview the performance is better but not ideal. Also my testing was only with 3000 nodes and connectors and it was sluggish, and we will require around 10000 nodes and connectors.

Any suggestions for performance improvements would be greatly appreciated.

Many thanks.

Jonathan

Jonathan,


You will see a large increase in performance if you do not use jump-overs:


//curve: go.Link.JumpOver,


Note that there are two link templates and therefore two places you should comment out jumpovers.


In my testing that makes a dramatic increase in performance.


AvoidsNodes routing additionally slows things down, but I see that you have already commented that out.