Em geral, o layout de gráfico é uma tarefa complexa que muitas vezes usa
heurística para resolver problemas NP completo (problemas que não podem ser
facilmente resolvidos de um ponto de vista computacional). Heurísticas diferentes
possuem diferentes características de velocidade. Gráficos pequenos geralmente não requerem
otimizações de desempenho. Alguns algoritmos de layout foram projetados
para gráficos de tamanho médio, mas apenas alguns algoritmos estão disponíveis
para gráficos grandes.
Usar o Layout Apenas Quando Necessário
O algoritmo de layout de gráfico geralmente é a parte mais complexa e mais
lenta de seu aplicativo. Projete seus aplicativos para usarem
o layout de gráfico com moderação e apenas quando necessário. Por exemplo, é possível
incluir um botão que aciona o layout, para que o layout não precise
ser executado continuamente durante todas as interações.
Usar Links Ortogonais sem o Layout de Link
Se seu aplicativo precisar de formas de links ortogonais,
talvez você queira usar um layout de link no modo de layout automático
(consulte setAutomaticLinkLayout). However, this mode causes the layout to be triggered
whenever a node moves. If you have many links, a full automatic link
layout can be slow. Um método alternativo é usar
o tipo de forma ortogonal de link (consulte setShapeType). Este tipo assegura que a forma do link permaneça
ortogonal, sem analisar todos os links para reduzir cruzamentos de links e
sobreposições. Portanto, isto pode ser mais eficiente do que executar o
layout de link em modo automático.
To enable the orthogonal shape type on a link, issue
one of the following calls:
link.setShapeType(ibm_ilog.diagram.LinkShapeType.Orthogonal);
link.setShapeType(ibm_ilog.diagram.LinkShapeType.OrthogonalEditable);
Usar o Layout Apropriado para o Tamanho do Gráfico
Algoritmos de layout de gráfico diferentes suportam gráficos
de tamanhos diferentes.
- O Layout de Árvore e o Layout de Grade podem manipular gráficos grandes.
- O Layout Hierárquico pode manipular gráficos de tamanho médio que não possuem muitos links.
- O Layout Direcionado por Força é o algoritmo mais lento e não é apropriado para gráficos grandes.
For more details, see Velocidade de Algoritmos de Layout de Gráfico.
Não Mostrar Todos os Links
Se você possuir um gráfico grande com links, é melhor mostrar
apenas uma árvore de ampliação do gráfico e ocultar os outros links. A árvore de ampliação pode ser organizada com o Layout de Árvore.
Projete seu aplicativo para usar interações para tornar o
usuário ciente de links ocultos. For example, selecting one node might
highlight all nodes that are reachable from this node through hidden
or visible links. It is more ergonomic than displaying all the links
at the same time. The user's eyes cannot trace links if too many are
displayed at the same time.
Armazenar em Cluster em Subgráficos e Reduzir
Às vezes os gráficos possuem informações de cluster
significativas.
Por exemplo, um gráfico de pessoas pode ser armazenado em cluster de
acordo com a nacionalidade ou de acordo com as famílias. Cada cluster pode ser representado como um
subgráfico aninhado (Subgraph) que pode ser reduzido ou expandido.
Os subgráficos possuem um layout mais rápido quando são
reduzidos, pois não é necessário organizar o conteúdo interno dos
clusters.
O diagrama também se tornará mais compreensível se forem mostrados apenas
detalhes de interesse, enquanto os subgráficos menos interessantes são
reduzidos. Conversely,
if all subgraphs are expanded, when the nesting depth of the subgraphs
is high, the layout can become slow. When an application uses large
graphs, a carefully designed clustering into nested subgraphs can
help to improve user experience.
Velocidade de Algoritmos de Layout de Gráfico
A velocidade dos algoritmos de layout de gráfico depende do
tipo de gráfico e dos parâmetros de layout. Some layouts are slow
for specific types of graphs.
Layout de Árvore
O Layout de Árvore é rápido e pode manipular gráficos
grandes, desde que você não use modos invertidos automáticos.
- Os modos de layout LIVRE e de NÍVEL são os mais rápidos.
- The radial layout modes are slightly slower, but still fast enough for large graphs.
- Os modos de layout invertidos são lentos e funcionam melhor apenas para gráficos pequenos.
Para obter detalhes, consulte
Layout de Árvore (TL).
Layout Hierárquico
A velocidade do Layout Hierárquico depende da densidade (a
proporção entre o número de links e o número de nós) do gráfico. Hierarchical Layout can handle large graphs that have few
links, but can be slow for smaller graphs that have many links.
A velocidade e qualidade do Layout Hierárquico também
dependem do número de restrições. Quanto menos restrições, maior a
liberdade do layout para posicionar nós e mais rápido esse layout será.
In particular, avoid constraint conflicts, because detecting these
conflicts is slow.
Para obter detalhes, consulte
Layout Hierárquico (HL).
Layout de Grade
O Layout de Grade é rápido e pode manipular gráficos grandes. No entanto, no modo de layout TILE_TO_MATRIX, a velocidade depende do
tamanho da malha da grade (a distância entre as linhas de grade). Quanto
menor o tamanho da malha da grade, mais lento será o layout. Em outros
modos de layout, o tamanho da malha da grade não tem influência no
desempenho.
Para obter detalhes, consulte
Layout de Grade (GL).
Layout de Link Curto e Longo
A velocidade do layout de Link depende do número de links.
Os Layouts de link são apropriados para gráficos de tamanhos pequeno e
médio. Se o gráfico tiver muitos links, consulte
Usar Links Ortogonais sem o Layout de Link.
Para o Layout de Link Longo, a velocidade depende do tamanho
da malha da grade (a distância entre linhas de grade). Quanto menor o
tamanho da malha da grade, mais lento será o layout. If possible, avoid the exhaustive search
mode (
LongLinkLayout.setExhaustiveSearching
),
because it is slow. Para obter detalhes, consulte
Layout de Link (LL).
Layout Direcionado por Força
Este algoritmo fornece três modos opcionais: incremental, não
incremental e multinível rápido. O último é mais rápido para gráficos
médios e grandes.
Para obter detalhes adicionais sobre estes modos, consulte
Modo de Layout
para o modo de layout do Layout Direcionado por Força.
Layout do Lado do Servidor
Para gráficos grandes ou complexos, é possível melhorar o
desempenho usando o Layout do lado do Servidor. Server-side layout sends all the graph
data to the server and performs the graph layout on the server. It
can be faster depending on:
- The speed of the JavaScript engine of your browser.
- A velocidade da conexão de rede entre o cliente e o servidor.
Interfaces de Customização de Layout
Vários algoritmos de layout suportam interfaces de
customização, como
INodeBoxProvider
,
INodeSideFilter
ou
ILinkConnectionBoxProvider
.
Ao usar estas interfaces, o algoritmo de layout vai diretamente para o seu
código. Use care when implementing these interfaces, because
they can lead to decreased performance of the layout algorithm.