昨日の続き。Smalltalk のコードを機械的に Ruby のコードに変換してみました。Ruby っぽくないところはご勘弁あれ、かし。
手元のがちょっと古めの Ruby なので、最新のものではもっと速いかもしれません。
$ ruby -v ruby 1.8.5 (2006-08-25) [powerpc-darwin8.7.0] $ time ruby ray.rb 256 9 real 47m43.610s user 43m55.615s sys 0m17.334s
$ ruby1.9 -v ruby 1.9.0 (2007-08-31 patchlevel 0) [powerpc-darwin8.10.0] $ time ruby1.9 ray.rb 256 9 real 18m40.266s user 17m10.797s sys 0m10.111s
とりあえず、かろうじて Squeak の勝ち( Vec でつまらない手抜きをしない版であれば(^_^;))…といったところでしょうか。環境によっては YARV には負けちゃうかも…。Groovy ほどではないにせよ、それなりに差が付くだろうと密かに期待していた(ぉぃ!)ので、なんとなくがっかり。
まとめると、手元の環境におけるこのベンチの結果では、
Java >5〜6倍の性能差> VisualWorks >4〜5倍の性能差> Squeak ≒ YARV >2〜3倍の性能差> Ruby1.8
といった印象。