フィボナッチで速度調査

フィボナッチで調査。
C言語D言語で比較してみる。


ソースはfib()関数だけならば同じ。

int fib(int n) {
	if (n == 1 || n == 2){
		return 1;
	}
	else{
		return fib(n-1) + fib(n-2);
	}
}


C言語(gcc)

$ time ./fib 50

real    3m11.824s
user    3m11.512s
sys     0m0.044s


D言語(dmd)

$ time ./fib.d 50

real    2m52.710s
user    2m52.275s
sys     0m0.028s

$ time ./fib 50

real    2m52.712s
user    2m52.375s
sys     0m0.032s


D言語の方が早い。
しかも何故か、D言語コンパイルしても、スクリプト形式で動かしてもほとんど速度に変化無し。
もしかして勝手にコンパイルして動かしているのかな?