2013年08月21日(Wed) 夏のおシゴトずんちょうに進行中 [長年日記]
● 久しぶりにLLインタプリタの起動にかかる負荷を調べてみた
以前Pythonの起動が遅い 件を調べてみたことがありました。 最近、 「vimの起動速度を2倍にする」詐欺への注意喚起:D があったこともあり、 最近のLLインタプリタで起動速度がどう変化しているか調べてみることにしました。
試験環境はUbuntu 13.04 (Linux 3.8.0-27-generic x86_64)、 perlは5.14.2、rubyは1.9.3p194、pythonは2.7.4です。
まずはtimeの結果。 LANGを設定してから、 time python -c ''などとして得られた最初の結果です。 LL言語間の違いは小さくなっているようです。
LANG | ja_JP.UTF-8 | C | ||
---|---|---|---|---|
time | user | sys | user | sys |
perl -e '' | 0m0.004s | 0m0.000s | 0m0.000s | 0m0.000s |
ruby -e '' | 0m0.008s | 0m0.008s | 0m0.008s | 0m0.004s |
python -c '' | 0m0.004s | 0m0.008s | 0m0.008s | 0m0.008s |
システムコール。 LANGを設定してから、 strace python -c '' 2>1 | wc -l (出力行数)や strace -e trace=read python -c '' 2>1 | awk '{s+=$NF}END{print(s)}' (readしたバイト数) などとして得られた結果です。
LANG | ja_JP.UTF-8 | C | ||
---|---|---|---|---|
strace | 出力行数 | readしたバイト数 | 出力行数 | readしたバイト数 |
perl -e '' | 180 | 4996 | 180 | 4996 |
ruby -e '' | 418 | 61709 | 413 | 61709 |
python -e '' | 852 | 290197 | 847 | 290508 |
どの言語でもシステムコールの数が若干増えています。 読んだバイト数は、 ruby 1.9.3 (ja_JP.UTF-8)では1.8.3 (ja_JP.EUC-JP)の20倍程度、 python 2.7.4 (ja_JP.UTF-8)では2.3.4 (ja_JP.EUC-JP)の2倍程度 になっているようです。 Rubyの躍進がすごい! 以前と違い、PythonのLANGによる起動負荷の違いはほぼなくなっていました。
開いたファイル名も見てみます。 strace.rbを使って
ふむふむ。 Rubyの読み出しバイト数が増えたのは、 デオフォルトでRubygms関連のファイルをどっさり読むようになったのが 効いていそうですね。
● vimの起動速度を5倍にする
さて本題。vimの起動速度は5倍くらい速くできるようです。しかも無料!
試験環境は上記と同じです。LANGはja_JP.UTF-8。
プラグイン等読まないのが良いようですね w
最近のツッコまれどころ