Performance Pros and Cons When Displaying Graphs
Questions & AnswersSummary
Description
When displaying large graphs in a Graph2DView, it is important to maintain the user experience and avoid (or at least minimize) any degradations in application response time. Especially the redraw of a huge number of graphical elements (nodes, edges, labels, etc.) can become a bottleneck.
To optimize the redraw performance for large graphs there can be taken several steps.
Simplification
Simplifying the visual representation of a graph means both reducing the number of graphical elements as well as using standard means to draw elements.
Actions with a positive effect on redraw performance include the following:
- Minimizing the number of node labels and edge labels.
- Minimizing the number of graphical decorations (i.e., arrowheads) at the ends of edges.
- Using simple shapes (like rectangle) to draw nodes, for instance.
- Using plain colors to fill nodes, i.e., in particular avoiding gradients.
- Using straight lines to draw edges, i.e., avoiding dashed or dotted lines.
Design Decisions
Making design decisions for an application's graph functionality means choosing the paradigm (and consequently, also the classes) for rendering nodes and edges. Also, the interaction behind the scenes of an application is affected. Positive effects on redraw performance can be observed when:
- Using ShapeNodeRealizer instead of GenericNodeRealizer for rendering of nodes.
- Using PolyLineEdgeRealizer instead of GenericEdgeRealizer for rendering of edges.
- Minimizing the number of listeners that are registered with the graph.