22:01:48 # Life platex のコンパイルするための makefile を並列で実行してみた。 東京エリアDebian勉強会用資料のリポジトリ(monthly-report.git) には、 tex のソースファイルが現時点で 110 あります。 高速化する方法はないかなぁとおもって並列ビルドを試してみました。 latex の特性として、スタイルファイルの読み込みや一時ファイルの読み書きなどでディスクIOはありますが主としてCPU負荷の高い処理が続き、 メモリ消費はあまりないというのがあります。 dvipdfmx を実行する部分で少しメモリを大きめに消費しますが、dvipdfmx+gs でも20MB程度。 ということで、メモリ1GB搭載のdual-core のノートパソコンで10並列で動かしてみました。 結論からいうと、2並列で十分高速になった気がします。 しかしそれ以上の高速化はまた違うチューニングをしないとだめなんじゃないかと。 直列の場合:
real 10m43.546s user 10m13.846s sys 0m16.429s
並列の場合(make -j2):
real 6m29.429s user 10m37.064s sys 0m19.005s
並列の場合(make -j10):
real 6m7.792s user 10m52.361s sys 0m19.293s
tex/styファイルのハッシュをとって、 latex の出力をキャッシュするという仕組みがあるともうすこし高速にできるかもなぁ。 styが変更されない前提で、 sty ファイルをロードしたところまでをダンプして、そこから先だけをビルドするとかすれば高速化になるか? whizzytexにある機能を応用したらできるか? この仕組みは preview-latexではpreview-cache-preamble というらしい。
$Id: dancer-diary.el,v 1.92 2007/08/30 21:46:09 dancer Exp $