Problemas de rendimiento sobre paquetes gráficos.

Problemas de rendimiento sobre paquetes gráficos.

Desarrollo algunas aplicaciones web que generan sus informes en LaTeX (sé que esto no es muy estándar, pero "por qué" y "es la mejor opción" no quieren ser el punto de esta pregunta, aunque son temas interesantes) .

Estoy bien con la mayoría de las tareas y problemas involucrados, pero tengo problemas de rendimiento en el servidor cuando uso TikZ para gráficos complejos (gráficos, barras, tartas y similares).

La pregunta es: ¿alguien tiene experiencia en el rendimiento de los diferentes paquetes gráficos? he leídoesta interesante publicaciónpero, si es posible, me gustaría evitar aprender cada una de las alternativas, construir la misma página con todas y medir el tiempo de compilación.

Muchas gracias por cualquier respuesta/comentario/pista.

Editar: según el comentario de @cfr, aquí tienes un ejemplo de una de las aplicaciones más complejas.

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{decorations.text}
\begin{document} 
\def\shadingangle{30}
\def\startinganglery{30}
\def\startingangleyg{120}
\def\subdivisions{60}
\begin{tikzpicture}[radius=3]
\draw[white] (-3.3,-0.2) rectangle  (3.3,3.3);
\fill [red] (0:0) -- ( 0:3) arc[start angle=0, delta angle=\startinganglery+\shadingangle/2]  -- cycle;
\fill [yellow] (0:0) -- (\startinganglery+\shadingangle/2:3) arc[start angle=\startinganglery+\shadingangle/2, delta angle=\startingangleyg-\startinganglery] -- cycle;
\fill [green] (0:0) -- (\startingangleyg+\shadingangle/2:3) arc[start angle=\startingangleyg+\shadingangle/2, delta angle=180-\startingangleyg-\shadingangle/2] -- cycle;

\foreach \i[evaluate={\col=(\i+.5)/\subdivisions*100}] in {0,...,\numexpr\subdivisions-1\relax}
    \fill[color=yellow!\col!red]
        (0,0) -- (\i*\shadingangle/\subdivisions+\startinganglery:3) arc[start angle=\i*\shadingangle/\subdivisions+\startinganglery, end angle=(\i+1)*\shadingangle/\subdivisions+1+\startinganglery] -- cycle;
\foreach \i[evaluate={\col=(\i+.5)/\subdivisions*100}] in {0,...,\numexpr\subdivisions-1\relax}
    \fill[color=green!\col!yellow]
        (0,0) -- (\i*\shadingangle/\subdivisions+\startingangleyg:3) arc[start angle=\i*\shadingangle/\subdivisions+\startingangleyg, end angle=(\i+1)*\shadingangle/\subdivisions+\startingangleyg] -- cycle;
\fill [white] (2.25,0) arc (0:180:2.25);
\draw (-3,0) -- (3,0);
\draw (3,0) arc  (0:180:3);

\draw [decorate,decoration={text along path, text=|\small|low medium high||,
text align=fit to path stretching spaces}]
(-3.1,0) arc  (180:0:3.1);

\fill (0.1,0) arc (0:180:0.1);
\draw [->,very thick] (0,0) -- (96:2.2);

\node[below,text width=6cm,align=center] at (0,0) {Compliance risk};
\end{tikzpicture}
\end{document} 

Respuesta1

Si elegirías TikZ, podrías acelerar la compilación usando

\usetikzlibrary{external}
\tikzexternalize

que fuerza al TikZ para guardar y, si es posible, reutilizar las imágenes. En consecuencia, esto sería (casi) tan rápido como usar gráficos externos. Por supuesto, esto sólo funciona si las imágenes no se modifican (muy a menudo).

información relacionada