参考
フィボナッチで各種言語をベンチマーク @tukiyo3を見て,D言語がないとぼやき,
フィボナッチで各種言語をベンチマーク - satosystemsの日記を見て,Nim がないからやろうかと思った男がいたそうな.
フィボナッチ数列でベンチマーク - 便乗編
対象言語
というわけで,C と D言語 と Nim で比較しようと思います.
Nim 使ったことなかったので,試してみたかっただけです.
結果
計測方法:10回くらいtime
コマンド使った上でおおまかに平均をとる
言語 | 時間[s] |
---|---|
C | 0.60 |
Nim | 0.61 |
D | 0.94 |
感想
- Nim が思いのほか頑張ってる
- D言語はもうちょっと頑張れよ
- 計測方法がゆるふわすぎる気もするが,見た感じ Nim と C に有意差はなさそう
- D言語と計測方法はもうちょっと頑張れよ
コードとか
参考記事と同じにしているのであまり意味もないですが載せます.
たぶん一番ベーシックな実装です.
C
古き良き,ときどきクソ野郎○と叫びたくなる,可愛いやつ.
fib.c
#include <stdio.h>
int fib( int n )
{
return n < 2 ? n : fib( n - 1 ) + fib( n - 2 );
}
int main(void)
{
printf("%d\n", fib(40));
return 0;
}
-O3
オプションのgcc-4.8.4
でコンパイル
D言語
我らがアイドルD言語くんは今回登場しません.
fib.d
import std.stdio
int fib( int n )
{
return n < 2 ? fib( n - 1 ) + fib( n - 2 );
}
void main(void)
{
fib(40).writeln;
}
dmd-2.66.0
でリリースビルド
Nim
Python みたいな構文.
fib.nim
proc fib( n: int ): int =
if n < 2: n else: fib( n - 1 ) + fib( n - 2 )
echo( fib(40) )
これも最適化オプションつけてnim-0.12.0
でビルドしてます.
前は生理的に受け付けなかったPythonを最近克服しつつあるので好印象を抱いている一方,環境であるエディタであるVimさんのご機嫌が斜めなせいで,Vim script書いてる時間の方が長いっていうね...