Проблемы с производительностью графических пакетов

Проблемы с производительностью графических пакетов

Я разрабатываю несколько веб-приложений, которые выводят свои отчеты в LaTeX (я знаю, что это не совсем стандартно, но «почему» и «является ли это лучшим выбором» не хочу быть темой этого вопроса, хотя это интересные темы).

Я справляюсь с большинством задач и проблем, с которыми приходится сталкиваться, но при использовании TikZ для создания сложных графиков (диаграмм, столбчатых диаграмм, круговых диаграмм и т. д.) возникают проблемы с производительностью сервера.

Вопрос: есть ли у кого опыт по производительности разных графических пакетов? Я читалэтот интересный постно, если это возможно, я бы хотел избежать изучения каждого из вариантов, построить одну и ту же страницу со всеми из них и измерить время компиляции.

Спасибо большое за любой ответ/комментарий/подсказку

Редактировать: согласно комментарию @cfr, вот пример одного из самых сложных приложений.

\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} 

решение1

Если бы вы выбрали ТикZ, вы можете ускорить компиляцию, используя

\usetikzlibrary{external}
\tikzexternalize

что заставляет TiкZ для сохранения и, если возможно, повторного использования изображений. Следовательно, это будет (почти) так же быстро, как использование внешней графики. Конечно, это работает только если изображения не меняются (очень часто).

Связанный контент