おまぬけ活動日誌

最近のツッコまれどころ

この日誌から Google してもらう


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言語間の違いは小さくなっているようです。

LANGja_JP.UTF-8C
timeusersysusersys
perl -e ''0m0.004s0m0.000s0m0.000s0m0.000s
ruby -e ''0m0.008s0m0.008s0m0.008s0m0.004s
python -c ''0m0.004s0m0.008s0m0.008s0m0.008s

システムコール。 LANGを設定してから、 strace python -c '' 2>1 | wc -l (出力行数)や strace -e trace=read python -c '' 2>1 | awk '{s+=$NF}END{print(s)}' (readしたバイト数) などとして得られた結果です。

LANGja_JP.UTF-8C
strace出力行数readしたバイト数出力行数readしたバイト数
perl -e ''18049961804996
ruby -e ''4186170941361709
python -e ''852290197847290508

どの言語でもシステムコールの数が若干増えています。 読んだバイト数は、 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倍くらい速くできるようです。しかも無料!

試験環境は上記と同じです。LANGja_JP.UTF-8

プラグイン等読まないのが良いようですね w


作り手とその取り巻きだけが楽しんでる間は本物じゃない。その中身が理解できない人々の生活を変えてこそ本物だ


zunda <zunda at freeshell.org>