グラフィック パッケージに関するパフォーマンスの問題

グラフィック パッケージに関するパフォーマンスの問題

私は、レポートを LaTeX で出力する Web アプリケーションをいくつか開発しています (これはあまり標準的ではないことは承知していますが、「なぜ」や「これが最善の選択なのか」は興味深いトピックではありますが、この質問の要点にはしたくありません)。

関連するタスクや問題のほとんどは問題ありませんが、複雑なグラフィック (グラフ、棒グラフ、円グラフなど) に TikZ を使用すると、サーバー上でパフォーマンスの問題が発生します。

質問は、さまざまなグラフィックパッケージのパフォーマンスについて経験のある人はいますか?私は読んだことがありますこの興味深い投稿しかし、可能であれば、それぞれの選択肢を学習したり、それらすべてを使用して同じページを構築したり、コンパイル時間を測定したりする作業は避けたいと思います。

回答/コメント/ヒントをいただければ幸いです

編集: @cfrのコメントによると、これは最も複雑なアプリケーションの例の1つです

\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

Tiを選ぶならZ、コンパイルを高速化するには、

\usetikzlibrary{external}
\tikzexternalize

Tiを強制するZ は画像を保存し、可能であれば再利用します。その結果、これは外部グラフィックスを使用する場合と (ほぼ) 同じくらい高速になります。もちろん、これは画像が (あまり頻繁に) 変更されない場合にのみ機能します。

関連情報