Clover2開発日誌

Clover2というJavaのように静的な型を持つRubyのようなインタプリタの開発日誌です。https://github.com/ab25cqにて開発しています

JITで演算子の実装を進めました

今回の収穫はキャストの仕方がわかったことですね。

とりあえず、僕のVMにはキャストが山ほどあるので、それが山場だと思っていたので、それがなんとかなりそうだと分かり、ほっとしてます。

 

あとは道なりに全部の命令をJIT化していきます。

問題は速くなるかですが、LLVMの最適化を信じています。

とりあえず-O3で3倍程度に速くなるLLVMの最適化を見ると、速くなりそうでワクワクします。

 

Clover2は文字列処理が遅いのが弱点だったので、そこがなんとかなると嬉しいです。正規表現を使った大量の文字列処理だと遅いサーバー上で実行すると13秒とか「今時なにこれ?」みたいな時間をかかってたので。ただpcre自体が遅い場合はお手上げですが、、、、。

 

でも、速いサーバーではJITを使わなくても十分な速度がでます。とにかくClover2をJIT無しで使う場合はVPSには高いお金を払ってくださいとしか言えません。

 

どこぞの安い月500円のVPSでは兎に角遅かったです。

 

Clover2の開発中C++コンパイル速度が遅すぎて困っていたので月1000円程度のVPSに引越ししました。引っ越すと、C++コンパイル速度がびっくりするぐらい速くなりました。やっぱり、VPSはケチってはいけませんね。

 

まあ、そんな感じです。5月中は無理かもしれませんが、6月末にはJIT付きのClover2 versioin1.4がリリースできると思います。その後はSocketクラスや拡張ライブラリを作れるようにしたり、のんびり改良していきます。退役軍人みたいなもんですかね。リリースが楽しみです。