本を読む

読書やコンピュータなどに関するメモ

続・「L2Lisp in Ruby」をPerlで

real    0m27.087s
user    0m27.050s
sys     0m0.012s

 …ごめんなさい、出直します。

の続き。

 DProfで調べると、eval()が激しく呼ばれていた(たらい関数だからねぇ)。で、eval()の中で多用している、データ型を調べる関数や、||がわりのfirst()も、かなり呼ばれている。そこで、データ型を調べる関数やfirst()をやめて、eval()の中に展開してみた。

$ time perl l2lisp.pl tak.l
7

real    0m17.588s
user    0m17.581s
sys     0m0.008s

 これだけでこんなに効果が。やっぱりプロファイリング重要。

 ちなみに、データ型を調べるには、L2Lisp.rbのやりかたをPerlに直訳して「ref($x) eq 'L2Lisp::Cell'」のようにしている。これを整数値の比較にできれば、かなり効果ありそう。

コメント

コメントの投稿

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

トラックバック

http://emasaka.blog65.fc2.com/tb.php/262-9cfc8577

 | HOME | 

Categories

Recent Entries

Recent Comments

Recent Trackbacks

Appendix

emasaka

emasaka

フリーター。
連絡先はこのへん

Monthly


FC2Ad