レイトレースベンチを Cincom Smalltalk で


ということで、Cincom SmalltalkVisualWorks)向けに書き換えてみました。Squeak 版との違いは…、

  • double のリテラル表現の違い
  • ファイルストリームの生成方法の違い
  • #+ などを持たない Array を継承させてもうま味がないので、改めて Vec を Object 下で実装しなおし
  • カーリーブレイスによる動的な配列生成表現をサポートしないので Array class>>#with:with:with: に差し替え
  • #infinity がないので、1d308 へ差し替え

といったところでしょうか。


VisualWorks には #timeToRun はないので、計測には昔ながらの Time class>>#millisecondsToRun: を用います。

Time millisecondsToRun: [self pixelSize: 256 level: 9]


結果は 173 秒。3分弱で終了します。環境は同じ 1.0 GHz PowerPC (OS X) です。30 分 15 分 かけて終わる Squeak からしたら爆速で 約 10 倍 約5倍 のパフォーマンスといったところ。この差は他の一般的なベンチマークでもだいたい一緒なので順当なところでしょう。さすがは商用 SmalltalkSqueak とは違うのだよ、Squeak とはっ!といった感じです。もっとも Java には余裕(同じ環境、同じパラメータ設定で、5〜6倍の遅さ)で負けてますけど(^_^;)。