マクロツイーター

はてダから移行した記事の表示が崩れてますが、そのうちに直せればいいのに(えっ)

LuaTeX が実はそんなに遅くないかも知れない件

LuaTeX といえば「スゴイけど遅い」という印象がある。しかし最近は随分と速くなった感じもしている。というわけで、実際に「日本語文書のコンパイル速度の比較」をしてみた。

※詳細についてはこちら。

計測方法

  • テスト用の文書はコレ。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
XeLaTeX4.07
pdfLaTeX4.36
LuaJITLateX6.54
LuaLaTeX7.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
XeLaTeX5.16
pdfLaTeX4.82
LuaJITLateX8.16
LuaLaTeX8.90