「アフリカでおなかすかせている子がいるんだよ!」

id:suikanさん経由で、いつも僕が気が付いたときにははてなの質問は終わってしまっていることが多いのです。

question:1157257701

回答の中に、「アメリカでは"Kids are starving in Africa!"と親が子供に言って全部食べさせようとする」という話が出てきていないですね。このフレーズは結構みんな子供のころに聞かされている、という感じのもので、大人同士の会話でもときどきギャグネタで出たりします。

http://www.businessweek.com/bwdaily/dnflash/aug2005/nf20050816_1137_db016.htm

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倍速いと言えるような速度になっています。

まあこれからの進歩にも期待しましょう。

PythonRubyJavaScriptも同じシステムに落とせるようにすることを狙っているので、それらの言語もこのくらいの速度で動くようになるはずです。

ついでに、関数呼び出し依存ではなくてループ依存のミニプログラムのテストもしてみました。

(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のやつは興味深いものがあります。