2008年9月16日 (火曜日)

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 というらしい。

Junichi Uekawa

$Id: dancer-diary.el,v 1.92 2007/08/30 21:46:09 dancer Exp $