フィボナッチ数の計算
マクロの起動時間に引き続いて、25番目のフィボナッチ数の計算を 行うマクロで処理時間を計測してみました。
前回同様、マクロの起動時間のページに貼り付けてある MacroBench の プラグインを使用しました。
今回は関数の呼び出しと足し算の処理が主となります。(*1)
マクロのソースコードは以下の通りです。
fib.jsee
function fib(n) {
if (n < 2) {
return 1
} else {
return fib(n-1) + fib(n-2)
}
}
Window.document.writeln( fib(25) )
fib.plee
#language="PerlScript"
sub fib {
my($n) = @_;
if ($n < 2) {
return 1;
} else {
return fib($n - 1) + fib($n-2);
}
}
$Window->document->writeln( fib(25) );
fib.vbee
function fib(n) if n < 2 then fib = 1 else fib = fib(n-1) + fib(n-2) end if end function Window.document.writeln( fib(25) )
fib.pyee
#language="Python" def fib(n): if n < 2: return 1 else: return fib(n-1) + fib(n-2) Window.document.writeln( fib(25) )
注: フィボナッチ数を求めるときは再帰を使うと効率が悪いので止めましょう :)
計測結果は以下のようになりました。(単位 ミリ秒)(*2)
| * | fib.jsee | fib.vbee | fib.plee | fib.pyee |
| 1回目 | 1750 | 1125 | 1703 | 4156 |
| 2回目 | 1328 | 953 | 812 | 297 |
| 3回目 | 1312 | 954 | 781 | 313 |
| 4回目 | 1328 | 968 | 782 | 297 |
| 5回目 | 1297 | 938 | 781 | 312 |
| 6回目 | 1328 | 969 | 797 | 281 |
| 7回目 | 1313 | 984 | 781 | 297 |
| 8回目 | 1297 | 921 | 781 | 297 |
| 9回目 | 1234 | 922 | 766 | 297 |
| 10回目 | 1266 | 969 | 766 | 281 |
文責: とらめ
添付ファイル
