LuaTeX といえば「スゴイけど遅い」という印象がある。しかし最近は随分と速くなった感じもしている。というわけで、実際に「日本語文書のコンパイル速度の比較」をしてみた。
※詳細についてはこちら。
- LaTeX: 日本語文書のコンパイル所要時間比較(Gist/zr-tex8r)
計測方法
- テスト用の文書はコレ。BXJS クラスの標準設定を使っていて、A4 で 9 ページある。
% BXJSクラスを使用してエンジンを自動判定させる. \documentclass[autodetect-engine,dvi=dvipdfmx,ja=standard, a4paper]{bxjsarticle} \usepackage{bxjalipsum} % \jalipsum 命令 \title{テスト的な何か} \author{某ZR} \date{コンパイル日付: \today} \begin{document} \maketitle \section{初恋} \begin{quote} \jalipsum{hatsukoi}% 島崎藤村「初恋」 \end{quote} \section{草枕} \jalipsum{kusamakura}% 夏目漱石「草枕」冒頭13段落 \section{吾輩は猫である} \jalipsum{wagahai}% 夏目漱石「吾輩は猫である」冒頭33段落 \end{document}
- (u)pLaTeX については、実際には ptex2pdf を用いて PDF まで変換する際の時間を測る。
- Windows 10 上の TeX Live 2017 を使用。
- updmap の jaEmbed の値は
ipaex
である。つまり、pdfLaTeXはipaex-type1が使われ、他は本物のIPAexフォントが使われる。 - 3 回予備で実行した後、9 回実行して所要時間を計測、その中間にある 5 回分の平均値を求めた。
実験結果
エンジン | 所要時間(秒) |
---|---|
pLaTeX(ptex2pdf) | 2.98 |
upLaTeX(ptex2pdf) | 3.24 |
XeLaTeX | 4.07 |
pdfLaTeX | 4.36 |
LuaJITLateX | 6.54 |
LuaLaTeX | 7.68 |
まとめ
LuaLaTeX は pLaTeX/upLaTeX に比べると 2〜2.5 倍くらい遅い。昔は「20 倍くらい遅い」という状態だったので、それと比べると大幅に高速化が行われていることが判る。
おまけ:“重い”パッケージを使った場合
少々画期的な要素(ゆきだるま⛄が回転している、等)を含めるために“重い”パッケージ(TikZ や expl3 等)を読み込む場合は、LuaLaTeX と pLaTeX の所要時間の差が小さくなる。
例えば次の tcfaspin パッケージを利用した文書の場合。
\documentclass[autodetect-engine,dvi=dvipdfmx,ja=standard, a4paper]{bxjsarticle} \usepackage{tcfaspin} \usepackage{scsnowman} \begin{document} 私は\scsnowman[muffler=red,hat,arms,snow,scale=1.5]よりも \faSpin{\scsnowman[muffler=red,hat,arms,snow,scale=1.5]}の 方が好きです。 \end{document} \end{document}
先と同じ要領で計測した所要時間は以下のようになる。
エンジン | 所要時間(秒) |
---|---|
pLaTeX(ptex2pdf) | 4.92 |
upLaTeX(ptex2pdf) | 5.59 |
XeLaTeX | 5.16 |
pdfLaTeX | 4.82 |
LuaJITLateX | 8.16 |
LuaLaTeX | 8.90 |