fibonacci(36) を計算してみた
いつも読んでる SoftwareDesign 誌の 2010年 5月号に Konoha という言語が紹介されていた。
Konoha というのは静的型のスクリプト言語らしい。
記事の最後にフィボナッチ数列を求めるスクリプトのベンチマークが載っていた。
我らが Ruby は断トツの最下位に挙げられていた。
でも、バージョンが 1.8.5 ってひどい。
最近の Ruby でやってみた。
記事に載っていた Konoha のスクリプトはこんな感じ。
int fib(int n) { if (n<3) return 1; return fib(n-1)+fib(n-2); } fib(36);
同じようなのを Ruby で書くとこんな感じ。
def fib(n) if n<3 1 else fib(n-1)+fib(n-2) end end puts fib(36)
まずは Konoha で実行。
$ konoha Konoha 0.5.2(kurume) source/LGPL3.0 (rev:1377, May 19 2010 21:55:14) [GCC 4.0.1 (Apple Inc. build 5493)] on macosx_32 (32, UTF-8) Options: iconv refc sqlite3 thread regex used_memory:368 kb >>> exit $ time konoha fib.k 14930352 real 0m1.944s user 0m1.935s sys 0m0.006s
つづいて ruby
$ ruby -v ruby 1.8.7 (2010-01-10 patchlevel 249) [i686-darwin9.8.0] $ time ruby fib.rb 14930352 real 1m40.886s user 1m12.737s sys 0m27.677s
なにこれ遅い。
やっぱり 1.9 系で試さなければ。
$ ruby19 -v ruby 1.9.1p378 (2010-01-10 revision 26273) [i386-darwin9.8.0] $ time ruby19 fib.rb 14930352 real 0m3.687s user 0m3.670s sys 0m0.013s
どんよりとしますね。