Smalltalk benchmark on Win95, WinNT, and Linux

VisualWorks Non-Commercial 3.0 (以下 VWNC)の性能が、 platform OS でどう違うか調べてみました。 今のところ、大きな差があるという証拠はありません。

1.実験環境

以下の3種類のOSを、同一の機械に install しました。

各々、ディスクのフォーマットからやり直し、 マルチブート(複数の OS を共存させる設定)にはしていません。 機械は、 DEC Globalist 620: Pentium 100MHz, 64MB memory, PCI Bus, 1.2G IDE Disk. です。

2.primitive のベンチマーク

VWNC には、$VISUALWORKS/advanced/ATBenchmarks.pcl に、primitive methods の ベンチマークプログラムが附属しています。 これに含まれる全ての種類のテストを、繰り返し3回試行しました。 設定はこちらをごらんください。 その調和平均をとったものは、

となりました。この数字は、大きいほど速いことを意味しています。

3.I/O関係のベンチマーク

ファイル入出力回りの性能比較として、50クラス・500KB程の Smalltalkコード (ftp://ftp.sra.co.jp/pub/lang/smalltalk/ipa/VisualWorks2.5/IPA016.tar.gz) を file in してみました。結果

かかりました。 ただしここで、 IpaSystem というクラスのクラスメソッド initialize の実行にかかる時間は、 除いています。 (Smalltalk でクラスを file in すると、 最後にそのクラスに initialize というメッセージが送られるようになっているのが 普通です。 IpaSystem class>>initialize は、 ファイル I/O に無関係ない重い処理をしているので、 それを測定時に呼び出さないようにしました。 具体的には、 Src00000.st というファイルの中の最後の IpaSystem install を削除した上で、 file in の時間を測りました。ちなみに、IpaSystem install には、別途 だけかかりました。)

graphics 回りの性能比較は、どうすればいいのかわからず、やりませんでした。 何かアイデアをお持ちの方はお教え下さい。

4.考察

以上は同一の機械で試したものの、各種キャッシュの量とか内容とか、 細かい設定 (ディスクの内外周での速度差とか、フラグメンテーションの除去とか、 デーモンプロセスとか)を行なっていません。 どれが何パーセント速いなどと 結論付けるのは早急過ぎると思われます。 しかし、特定のプラットフォームにおいて特異な問題が起きるようなことはないと 安心してよさそうです。

ファイル I/O は、複雑な処理をしている file in よりも、 a ReadStream に contents を送るという単純なものを試すべきだったかもしれません。


質問やコメントを強く歓迎します。
Written on Mar 29, 1999

渡邊克宏

katsu@watanabe.name