Faster.pm の現状と課題
ちょっとみてみたかんじで、いくつか感じたことをメモしておく。
JIT 素人すぎるので、まとはずれなこといってるとおもいますけど。
不安定
perl -Mblib -MFaster -e 'use Plack::Loader; Plack::Loader->load("Standalone")->run(sub {[200,[],"OK"]})'
が SEGV するとか。
速度が 20% しかはやくならない
たしかに価値はあるが、もうちょいアップするとうれしい。
すべての関数をJITしてる
現実的には特定のホットスポットのみをやった方がいいのではないか。ちょっとおおきいものをコンパイルすると起動に鬼のように時間がかかる。
たとえば sub foo :Optimize { } のようにアトリビュートつけたものだけをやるとか。
gcc を起動してる
op tree を c に変換して gcc してるので、コンパイルに時間がかかる。移植性はあるだろうけど、遅い。
直接マシン語にかえられれば起動速度がましになるのではないか。
opcode のインライン展開
現在、Perl_pp_add() などはいちいち手でよんでるが、これをインライン展開すればはやいのではないか。