Io fiboBench
すっかり気に入ってしまったのだが,こうなると実行速度の鈍さが気にかかる。
Number fib := method(if(self < 2, 1, (self - 1) fib + (self - 2) fib)) n := File standardInput readLine asNumber; t := Date clock writeln("fib(".. n ..") = ", n fib, "\n", Date clock - t, " sec.")
対照言語はマイナーどころを用意。
!Integer methodsFor: 'arithmetic'! fib ^(self < 2) ifTrue: [ 1 ] ifFalse: [ (self - 1) fib + (self - 2) fib ]! ! stdout << 'fib(' << (N := stdin nextLine asInteger) << ') = ' << ((Time millisecondsToRun: [ N fib printNl ]) / 1d3) << ' sec.'; nl!
Int::fib: method { return this < 2 ? 1 : this-1 .fib + this-2 .fib; } n, t: stdin.get_s(9).to_i, clock(); %f{fib(%d) = %d\n%d sec.}(n, n.fib, clock() - t).p;
>echo 25 | io fib.io fib(25) = 121393 4.6769999999999996 sec. >echo 25 | gst fib.st fib(25) = 121393 0.043 sec. >echo 25 | xtal fib.xtal fib(25) = 121393 0.084 sec.
…うーむ。いくら何でも遅すぎるような。