レイトレースベンチを Ruby で


昨日の続き。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倍の性能差> SqueakYARV >2〜3倍の性能差> Ruby1.8

といった印象。