Perlテックブログ

ITエンジニアの成長意欲を刺激する技術考察、モジュール開発の日記。Perlイベントや国内や海外のPerlの記事の紹介。

SPVMでJIT実装に成功しつつある

Perlを30倍速くするSPVMプロジェクトなんだけれど、今やっているLinuxの環境で、JITコンパイルに成功しつつある。とてもいい感じで、IoTと人工知能とWebを結び付けるという目標に少しづつ近づいている。

PerlJIT

SPVMはPerlと非常に近い文法で書ける。そして、これをJITコンパイルすることが、直近の目標。おそらくPerlのプロジェクトでJITというのは、世界初の試みだ。

実行時に機械語コンパイルすることによって、実行時のパフォーマンスを飛躍的上げることができるJITの実装にLinuxの64bit環境で成功した。

予想より時間のかかるGCCコンパイル

JITの実装には成功したのだけれど、GCCコンパイルは予想以上に時間がかかることがわかってきた。C言語GCCコンパイルするというのは、予想以上に、CPUを使って、時間がかかる。

あのPerlのスッとコンパイルが終わる気持ちよさが、なくなってしまう感じだ。試験を書いているスクリプトで、最適化なしで2~3秒、最適化ありで5秒くらいはかかる。

Perlのよさの最大の部分は、コンパイルの速さなので、ここが犠牲になるのは、いただけない感じ。部分的なJITコンパイル数を少なくして、オプションで、すべてをJITできるようにするのがいいかもという印象だ。

1.0のリリースのときは、使ってもらって評価してもらいたい

課題はまだ非常に多く、1.0のリリースは、あと1年はかかりそうだ。でも、そのときは、バグもつぶして、対応OSも増やして、コンパイル速度も上げて、実行時パフォーマンスも上げていくので、使ってもらって評価して感触を教えてほしい。