2005年06月06日(Mon) ビール飲み過ぎで起動が遅いです [長年日記]
● なんちて
● Pythonの起動は遅い(かもしれない)
enbug diaryより。へぇ。ちょっと手元でも実験してみました。
ほんとだ。perl, v5.8.5、ruby 1.8.3、Python 2.3.4です。
straceするとシステムコールの回数がわかるのかな。
ふむふむ。じゃあ起動して終了するまでにreadしたバイト数。
1.5桁ほどちがいますね。バイトコードを実行するようになってるあたりが違うのでしょうか?
なんだか日本語エンコーディング関連のようなファイル名が沢山見えました。ならば、
速くなった?
うんにゃ。しかしロケールでtimeの出力が違うのにびっくり。(追記:普段はja_JP.EUC-JPになってます。、下にもっと追記)
readしたバイト数をファイル名に関連づけられるともう少しいろいろわかるのでしょうけど、また今度にしまーす。
(もっと追記)timeの出力が変化するのはロケールのせいじゃなかったです。LANG=ja_JP.EUC-JP time …
でもLANG=C
を付けた時と同じ出力が得られました。コマンドラインの最初にtimeを書くとbashの予約語のtimeとして解釈されて、LANG=…の後にtimeを書くとコマンド名として解釈されて/usr/bin/timeが実行される、というのが真相のようです。失礼しました。
● straceからファイル名と読んだデータの大きさを得る
そういうわけで簡単なスクリプトを作ってみました。ファイル名にダブルクォーテーションが含まれてたりするとどうなるか知らない。
ここではstrace.rbというファイル名にしてあります。結果はというと、
へぇ。バイトコードになったPythonスクリプトをたくさん読んでるのかな?
perlでもrubyでも、そしてpythonでも、共有オブジェクトは512バイトずつ読まれてるのですが、ELFでは最初の512バイトにシンボルテーブルが書かれてたりするのでしょうか。いつか調べるー。いつー。
● うりゃ。man -t select_tut | ps2pdf - - >| select_tut.pdf
最近のツッコまれどころ