各処理系の速度
- http://d.hatena.ne.jp/higepon/20060808/1155000068
- http://osdevj.g.hatena.ne.jp/osdevj/20060807/1154962935
Gauche以外はループ内で加算をしているのに、Gauche用のコードは繰り返しの処理しかしてなくてフェアじゃないような気がした。
というわけで、CINT以外を手元で実験。
結果はこんな感じ。
処理系 | 実行時間[sec] |
---|---|
C | 0.058 |
Java | 0.268 |
Perl | 1.808 |
Python | 2.310 |
Ruby | 5.844 |
Gauche | 1.699 |
結局インタプリタではGaucheが一番早いという結果は変わらない訳だけど。
Gaucheで実行したコードは以下。
(define (count n i c) (if (= i c) n (count (+ n i) (+ i 1) c))) (print (count 0 0 10000000))
ちなみにPythonはrangeの代わりに xrange を使うようにしてある。あとPythonで
import itertools print sum(itertools.repeat(1, 10000000))
とかやると、0.766secというパフォーマンスを出してくれる。まぁsumとitertools.repeatが両方ともNative Codeなんだろう、多分。