読者です 読者をやめる 読者になる 読者になる

北海道苫小牧市出身の初老PGが書くブログ

永遠のプログラマを夢見る、苫小牧市出身のおじさんのちらしの裏

JITで爆速なgperlを試す

perl gperl

Linux Mint上でgperlをビルドした。原則、ないと言われたものをどんどんaptで入れてっただけだけど、jit/jit.hがないって言われてそいつだけaptで解決できなかったのでこのPostScriptのファイル読んでlibjitをビルドした。

これで万事うまくgperlが作れたのでベンチ用のフィボナッチ数列を早速動かしてみると、

% time ./gperl sample/benchmark/fib.pl
14930352
./gperl sample/benchmark/fib.pl  0.21s user 0.01s system 192% cpu 0.112 total
% time perl5.18.0 sample/benchmark/fib.pl
14930352
perl5.18.0 sample/benchmark/fib.pl  7.78s user 0.00s system 99% cpu 7.806 total

perl5.18.0の37倍くらい速かった。この処理はjitが最大限効くgperlに非常に有利な処理ではあるけど、とはいえ、それでもやっぱりgperlは速い。

ついでにさらに差がつくと思われるたらいまわし関数も。こちらは自分の環境ではそのままだとセグフォして動かなかったので、関数の戻り値を変数で受けるように変更してからの実行。

% time ./gperl sample/benchmark/tarai.pl
13
./gperl sample/benchmark/tarai.pl  0.57s user 0.00s system 196% cpu 0.289 total
% time perl sample/benchmark/tarai.pl
13
perl sample/benchmark/tarai.pl  27.99s user 0.00s system 99% cpu 28.052 total

こちらは49倍速かった。ちなみに発表資料では100倍くらい差がつくという話もあったので、環境によってはもっと差が出るのかもしれない*1

*1:もしかするとperl5.18.0が5.16.xより結構速くなってるのかも