簡単なループのベンチマークのJava 版、Ruby 版 が載っていたので、早速手近なマシン(type U、1GHz)で、fact の引数を 100 に増やしたものを試してみました。
Java: 0.972 MicroSeconds per call Ruby: 899 MicroSeconds per call
Java 、速すぎ(笑)。(追記:この場合、BigInteger でないと駄目ですね。結果は 7.2 でそれでも十分速いですが…) ちなみに Squeak、VisualWorks 3.1 でちょっとスクリプト言語スタイル(その場でメソッド定義…みたく)を意識した少々マニアックな Smalltalk コード(Squeak、VW3 共通)、
n time |
では、
Squeak: 340.7 MicroSeconds per call VW3.1: 108.8 MicroSeconds per call
てなぐあいでした。Squeak VM は Ruby の 10 倍くらい、VisualWorks VM はさらにその 10 倍くらい速いかなぁ…となかば根拠レスに思っていたのですが、そうでもないんですね。Squeak でこのくらいの差なら、場合によっては Ruby に負けることもありそうです。同じような差でも Squeak が VisualWorks に勝つことはなさそうですが(^_^;)。ってか、あんまし勝ってほしくないし。