各処理系の速度

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なんだろう、多分。