Smalltalk benchmark on Win95, WinNT, and Linux
VisualWorks Non-Commercial 3.0 (以下 VWNC)の性能が、
platform OS でどう違うか調べてみました。
今のところ、大きな差があるという証拠はありません。
1.実験環境
以下の3種類のOSを、同一の機械に install しました。
- [Win95] Windows 95 4.00.950
- [WinNT] Windows NT Workstation 4.0 + Service Pack 3
- [Linux] Turbo Linux 3.0 (カーネルは Linux 2.2.2)
各々、ディスクのフォーマットからやり直し、
マルチブート(複数の 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 してみました。結果
- [Win95] 91324 msec
- [WinNT] 103930 msec (Win95比 1.14)
- [Linux] 124678 msec (Win95比 1.37)
かかりました。
ただしここで、
IpaSystem というクラスのクラスメソッド initialize の実行にかかる時間は、
除いています。
(Smalltalk でクラスを file in すると、
最後にそのクラスに initialize というメッセージが送られるようになっているのが
普通です。
IpaSystem class>>initialize は、
ファイル I/O に無関係ない重い処理をしているので、
それを測定時に呼び出さないようにしました。
具体的には、
Src00000.st というファイルの中の最後の IpaSystem install を削除した上で、
file in の時間を測りました。ちなみに、IpaSystem install には、別途
- [Win95] 338412 msec
- [WinNT] 333899 msec
- [Linux] 299285 msec
だけかかりました。)
graphics 回りの性能比較は、どうすればいいのかわからず、やりませんでした。
何かアイデアをお持ちの方はお教え下さい。
4.考察
以上は同一の機械で試したものの、各種キャッシュの量とか内容とか、
細かい設定
(ディスクの内外周での速度差とか、フラグメンテーションの除去とか、
デーモンプロセスとか)を行なっていません。
どれが何パーセント速いなどと
結論付けるのは早急過ぎると思われます。
しかし、特定のプラットフォームにおいて特異な問題が起きるようなことはないと
安心してよさそうです。
ファイル I/O は、複雑な処理をしている file in よりも、
a ReadStream に contents を送るという単純なものを試すべきだったかもしれません。
質問やコメントを強く歓迎します。
Written on Mar 29, 1999
渡邊克宏
katsu@watanabe.name