Optimizaciones del diseño de gráficos

El diseño de gráficos es, en general, una tarea compleja que a menudo utiliza la heurística para resolver problemas NP-completos (problemas que no pueden solucionarse fácilmente desde el punto de vista computacional). Distintas estrategias heurísticas tienen diferentes características de velocidad. Los gráficos pequeños no suelen necesitar una optimización del rendimiento. Algunos algoritmos de diseño están pensados para gráficos medianos, pero sólo se dispone de unos pocos algoritmos para gráficos grandes.

Utilice el diseño sólo cuando sea necesario

El algoritmo de diseño de gráficos generalmente es la parte más compleja y lenta de la aplicación. Diseñe las aplicaciones de modo que utilicen el diseño de gráficos con moderación y sólo cuando sea necesario. Por ejemplo, puede incluir un botón que active el diseño, de modo que éste no tenga que ejecutarse continuamente durante todas las interacciones.

Utilice enlaces ortogonales sin diseño de enlaces

Si la aplicación requiere formas de enlaces ortogonales, puede tener la tentación de utilizar un diseño de enlaces en modalidad de diseño automático (consulte setAutomaticLinkLayout). Sin embargo, esta modalidad hace que el diseño se desencadene cada vez que se mueve un nodo. Si tiene muchos enlaces, un diseño de enlaces totalmente automático puede ser lento. Un método alternativo consiste en utilizar el tipo de forma ortogonal de enlace (véase setShapeType). Este tipo garantiza que la forma del enlace sigue siendo ortogonal, sin tener que analizar todos los enlaces para reducir el número de intersecciones de enlaces y los solapamientos. Por lo tanto, puede ser más eficaz que ejecutar el diseño de enlaces en modalidad automática.
Para habilitar el tipo de forma ortogonal en un enlace, emita una de las llamadas siguientes:
  • link.setShapeType(ibm_ilog.diagram.LinkShapeType.Orthogonal);
  • link.setShapeType(ibm_ilog.diagram.LinkShapeType.OrthogonalEditable);

Uso del diseño adecuado al tamaño del gráfico

Distintos algoritmos de diseño de gráficos admiten distintos tamaños.
  • El Diseño de árbol y el Diseño de cuadrícula pueden manejar gráficos grandes.
  • El Diseño jerárquico puede manejar gráficos medianos que no tienen demasiados enlaces.
  • El Diseño dirigido por fuerzas es el algoritmo más lento y no es adecuado para gráficos grandes.
Para obtener más información, consulte Velocidad de los algoritmos de diseño de gráficos .

No se muestran todos los enlaces

Si tiene un gráfico grande con enlaces, lo mejor es mostrar sólo un de árbol de expansión del gráfico y ocultar los otros enlaces. El árbol de expansión se pueden diseñar con el Diseño de árbol.
Diseñe su aplicación de modo que utilice interacciones para que el usuario se percate de los enlaces ocultos. Por ejemplo, si selecciona un nodo puede resaltar todos los nodos que están al alcance de este nodo mediante enlaces ocultos o visibles. Es más ergonómico que mostrar todos los enlaces al mismo tiempo. Los ojos del usuario no puede encontrar los enlaces si se muestran demasiados a la vez.

Agrupación en clúster de subgráficos y contracción de éstos

A veces los gráficos tienen información de clúster importante. Por ejemplo, un gráfico de población puede agruparse en clúster en función de la nacionalidad o de sus relaciones familiares. Cada clúster se pueden representar como un subgráfico anidado (Subgraph) que se puede contraer o expandir.
Los subgráficos tienen un diseño más rápido cuando se contraen, ya que no es necesario presentar el contenido interno de los clústeres. El diagrama también se vuelve más comprensible si sólo se muestran los detalles de interés mientras los subgráficos menos interesantes están contraídos. Por el contrario, si todos los subgráficos están expandidos, cuando la profundidad de anidamiento de los subgráficos es alta, el diseño puede ralentizarse. Cuando una aplicación utiliza gráficos grandes, una agrupación en clúster de subgráficos anidados cuidadosamente diseñada puede mejorar la experiencia del usuario.

Velocidad de los algoritmos de diseño de gráficos

La velocidad de los algoritmos de diseño de gráficos depende del tipo de gráfico y de los parámetros de diseño. Algunos diseños son lentos para determinados tipos de gráficos.

Diseño de árbol

El Diseño de árbol es rápido y puede manejar gráficos muy grandes, siempre que no se utilicen la modalidad de volcado automático.
  • Las modalidades de diseño FREE (libre) y LEVEL (de nivel) son las más rápidas.
  • Las modalidades de diseño radiales son algo más lentas, pero siguen siendo lo bastante rápidas para gráficos grandes.
  • Las modalidades de diseño de volcado son lentas y funcionan mejor para gráficos pequeños.
Para obtener más información, consulte Diseño de árbol (DA).

Diseño jerárquico

La velocidad del Diseño jerárquico depende de la densidad (la proporción entre el número de enlaces y el número de nodos) del gráfico. El Diseño jerárquico puede manejar gráficos grandes que tengan pocos enlaces, pero puede ser lento para gráficos más pequeños que tengan muchos enlaces.
La velocidad y calidad del Diseño jerárquico también depende del número de restricciones. Cuantas menos restricciones haya, mayor será la libertad que tendrá el diseño para colocar los nodos y más rápidamente se ejecutará el diseño. En concreto, evite los conflictos de restricciones, porque detectarlos es lento.
Para obtener más información, consulte Diseño jerárquico (DJ) .

Diseño de cuadrícula

El Diseño de cuadrícula es rápido y puede manejar gráficos grandes. Sin embargo, en la modalidad de diseño TILE_TO_MATRIX, la velocidad depende del tamaño de la malla de la cuadrícula (la distancia entre las líneas de la cuadrícula). Cuanto menor sea el tamaño de la malla de la cuadrícula, más lento será el diseño. En otras modalidades de diseño, el tamaño de la malla de la cuadrícula no tiene ninguna influencia en el rendimiento.
Para obtener más información, consulte Diseño de cuadrícula (DC) .

Diseño de enlaces cortos y largos

La velocidad del Diseño de enlaces depende del número de enlaces. Los Diseños de enlaces son adecuados para gráficos pequeños y medianos. Si el gráfico tiene muchos enlaces, consulte Utilice enlaces ortogonales sin diseño de enlaces.
En el caso del Diseño de enlaces largos, la velocidad depende del tamaño de la malla de la cuadrícula (la distancia entre las líneas de la cuadrícula). Cuanto menor sea el tamaño de la malla de la cuadrícula, más lento será el diseño. Si es posible, evite la modalidad de búsqueda exhaustiva (LongLinkLayout.setExhaustiveSearching), porque es lenta.
Para obtener más información, consulte Diseño de enlaces (DE) .

Diseño dirigido por fuerzas

Este algoritmo proporciona tres modalidades opcionales: incremental, no incremental, y rápida de varios niveles. La última es más rápida para gráficos medianos y grandes.
Para obtener más información sobre estas modalidades, consulte Modalidad de diseño para la modalidad de diseño del Diseño dirigido por fuerzas.

Diseño en el servidor

Para gráficos grandes o complejos, puede mejorar el rendimiento utilizando el Diseño en el servidor. El diseño en el servidor envía todos los datos del gráfico al servidor y ejecuta el diseño del gráfico en el servidor. Puede ser más rápido dependiendo de:
  1. La velocidad del motor de JavaScript del navegador.
  2. La velocidad de la conexión de red entre el cliente y el servidor.

Interfaces de personalización del diseño

Varios algoritmos de diseño dan soporte a interfaces de personalización, como el INodeBoxProvider, INodeSideFilter o ILinkConnectionBoxProvider. Cuando utilice estas interfaces, el algoritmo de diseño cambia rápidamente al código personalizado. Tenga cuidado al implementar estas interfaces, porque pueden reducir el rendimiento del algoritmo de diseño.