Jolt
「Ianのやつ」と呼ばれているものの一部、というか途中形態であるJoltがMac以外でも使えるようになってきた。せっかくなので速度比較ということでid:sumimさんのhttp://d.hatena.ne.jp/sumim/20060220を測ってみました。
Ackの方は、Sqeuakのメソッド版が132msに対して61msくらい、Taraiの方は、Squeakのメソッド版が2350msに対して240msくらいでした(Joltの結果は、cygwinのtimeコマンドでコマンドラインから測りました)。Joltは起動時のオーバーヘッドがある程度あるので、Ackの方は実際の実行時間が短すぎるのでしょうね。(空のファイルを食わせても45msくらいかかりますし。)ただ、Taraiを見ると、Squeakよりも約10倍速いと言えるような速度になっています。
まあこれからの進歩にも期待しましょう。
PythonやRubyやJavaScriptも同じシステムに落とせるようにすることを狙っているので、それらの言語もこのくらいの速度で動くようになるはずです。
ついでに、関数呼び出し依存ではなくてループ依存のミニプログラムのテストもしてみました。
(define z 100) (define y 1) (while (> z 0) (define x 1000000) (while (> x 0) (set x (- x 1)) (set y (+ y 1))) (set z (- z 1))) ((_dlsym _RTLD_DEFAULT "printf") "%d" y)
というコードだと、ざっと725msくらいですね(これがJoltとCokeのコードです)。-Oを付けないCと大体似たようなスピードでしょうか。
Jolt同様に対話的な言語で似たような性能を示す処理系はあまたありますが、本当に言語の中の中まで変えられる(ことを目指している)処理系として、Ianのやつは興味深いものがあります。