FC2ブログ

TeXLiveのlatexが遅い件

仕事で使っているMacのうち1台をLionからMavericksにアップデートした。正確にはクリーンインストールしたのだが。

ともあれ、これを機にMacPortsからHomebrewに乗り換えた。
これに伴ってMacPortsで入れていたTexをTexLiveに乗り換えたのだが、とてつもなく遅い。

具体的にどのくらい遅いのかを測定してみた。

■比較対象マシン
○MacPorts pTex
OS: Mountain Lion 10.8.5
CPU: Core i7 2.3GHz
Memory: 16GB
Disk: HDD 1TB

○TeXLive 2014
OS: Mavericks 10.9.4
CPU: Core i5 1.7GHz
Memory: 4GB
Disk: SSD 256GB

1000行くらいの英文TeXファイルをlatexにかけてみた。
連続10回実行した場合の時間をtimeコマンドで測定した。

■MacPortsのTeX
% time (repeat 10 latex hoge.tex)
( repeat 10; do; latex hoge.tex; done; ) 0.71s user 0.08s system 96% cpu 0.822 total

■TeXLive 2014
% time (repeat 10 latex hoge.tex)
( repeat 10; do; latex hoge.tex; done; ) 7.37s user 0.26s system 99% cpu 7.692 total

差は歴然。TeXLiveの方は10倍程度の時間がかかっている。
マシンスペックの差はあるが、ここまでの差になるとは思えない。

TeXを実行するたびにこんなに時間がかかるのはとてもイライラする。
そもそもTeXがタイプセットする仕組みをしっかり理解しているわけではないので原因を探ろうにもとても時間がかかってしまいそう。どこかに解決の糸口はないものだろうか。


■2014/08/01追記:

tlmgr confを確認せよとの情報をいただいた。
確認したところ、デフォルトではkpathseaで~/Libraryとかを検索しにいっているようだ。ひとまずこれを外してみた。

具体的には/usr/local/texlive/2014/texmf.cnf、/usr/local/texlive/2014/texmf-dist/web2c/texmf.cnfの中で~/の下に関わるものをすべてコメントアウトした。

結果はこれ。
% time (repeat 10 latex hoge.tex)
( repeat 10; do; latex hoge.tex; done; ) 6.84s user 0.23s system 99% cpu 7.108 total

10%程度の改善か。もしかすると、古いバージョンでは検索パスが少ないということなのかもしれない・・・。だとするとこの辺で手を打てということか。


% tlmgr conf
=========================== version information ==========================
tlmgr revision 34227 (2014-05-23 15:13:03 +0200)
tlmgr using installation: /usr/local/texlive/2014
TeX Live (http://tug.org/texlive) version 2014

==================== executables found by searching PATH =================
PATH: /usr/texbin:/usr/local/mysql/bin:/Applications/adt-bundle/sdk/platform-tools:/Users/pman0214/bin:/usr/local/bin:/usr/local/sbin:/opt/local/bin:/opt/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin:/usr/texbin
kpsewhich: /usr/texbin/kpsewhich
updmap: /usr/texbin/updmap
fmtutil: /usr/texbin/fmtutil
tlmgr: /usr/texbin/tlmgr
tex: /usr/texbin/tex
pdftex: /usr/texbin/pdftex
mktexpk: /usr/texbin/mktexpk
dvips: /usr/texbin/dvips
dvipdfmx: /usr/texbin/dvipdfmx
=========================== active config files ==========================
texmf.cnf: /usr/local/texlive/texmf-local/web2c/texmf.cnf
texmf.cnf: /usr/local/texlive/2014/texmf.cnf
texmf.cnf: /usr/local/texlive/2014/texmf-dist/web2c/texmf.cnf
updmap.cfg: /usr/local/texlive/2014/texmf-config/web2c/updmap.cfg
updmap.cfg: /usr/local/texlive/2014/texmf-dist/web2c/updmap.cfg
fmtutil.cnf: /usr/local/texlive/2014/texmf-var/web2c/fmtutil.cnf
config.ps: /usr/local/texlive/2014/texmf-config/dvips/config/config.ps
mktex.cnf: /usr/local/texlive/2014/texmf-dist/web2c/mktex.cnf
pdftexconfig.tex: /usr/local/texlive/2014/texmf-config/tex/generic/config/pdftexconfig.tex
============================= font map files =============================
psfonts.map: /usr/local/texlive/2014/texmf-var/fonts/map/dvips/updmap/psfonts.map
pdftex.map: /usr/local/texlive/2014/texmf-var/fonts/map/pdftex/updmap/pdftex.map
ps2pk.map: /usr/local/texlive/2014/texmf-var/fonts/map/dvips/updmap/ps2pk.map
kanjix.map: /usr/local/texlive/2014/texmf-var/fonts/map/dvipdfmx/updmap/kanjix.map
=========================== kpathsea variables ===========================
TEXMFMAIN=/usr/local/texlive/2014/texmf-dist
TEXMFDIST=/usr/local/texlive/2014/texmf-dist
TEXMFLOCAL=/usr/local/texlive/texmf-local
TEXMFSYSVAR=/usr/local/texlive/2014/texmf-var
TEXMFSYSCONFIG=/usr/local/texlive/2014/texmf-config
TEXMFVAR=
TEXMFCONFIG=
TEXMFHOME=
VARTEXFONTS=$TEXMFVAR/fonts
TEXMF={$TEXMFCONFIG,$TEXMFVAR,$TEXMFHOME,!!/usr/local/texlive/2014/texmf-config,!!/usr/local/texlive/2014/texmf-var,!!/usr/local/texlive/texmf-local,!!/usr/local/texlive/2014/texmf-dist}
SYSTEXMF=/usr/local/texlive/2014/texmf-var:/usr/local/texlive/texmf-local:/usr/local/texlive/2014/texmf-dist
TEXMFDBS={!!/usr/local/texlive/2014/texmf-config,!!/usr/local/texlive/2014/texmf-var,!!/usr/local/texlive/texmf-local,!!/usr/local/texlive/2014/texmf-dist}
WEB2C={$TEXMFCONFIG,$TEXMFVAR,$TEXMFHOME,!!/usr/local/texlive/2014/texmf-config,!!/usr/local/texlive/2014/texmf-var,!!/usr/local/texlive/texmf-local,!!/usr/local/texlive/2014/texmf-dist}/web2c
TEXPSHEADERS=.:{$TEXMFCONFIG,$TEXMFVAR,$TEXMFHOME,!!/usr/local/texlive/2014/texmf-config,!!/usr/local/texlive/2014/texmf-var,!!/usr/local/texlive/texmf-local,!!/usr/local/texlive/2014/texmf-dist}/{dvips,fonts/{enc,type1,type42,type3}}//
TEXCONFIG={$TEXMFCONFIG,$TEXMFVAR,$TEXMFHOME,!!/usr/local/texlive/2014/texmf-config,!!/usr/local/texlive/2014/texmf-var,!!/usr/local/texlive/texmf-local,!!/usr/local/texlive/2014/texmf-dist}/dvips//
ENCFONTS=.:{$TEXMFCONFIG,$TEXMFVAR,$TEXMFHOME,!!/usr/local/texlive/2014/texmf-config,!!/usr/local/texlive/2014/texmf-var,!!/usr/local/texlive/texmf-local,!!/usr/local/texlive/2014/texmf-dist}/fonts/enc//
TEXFONTMAPS=.:{$TEXMFCONFIG,$TEXMFVAR,$TEXMFHOME,!!/usr/local/texlive/2014/texmf-config,!!/usr/local/texlive/2014/texmf-var,!!/usr/local/texlive/texmf-local,!!/usr/local/texlive/2014/texmf-dist}/fonts/map/{kpsewhich,pdftex,dvips,}//
==== kpathsea variables from environment only (ok if no output here) ====

管理者にだけ表示を許可する