アクセスログを見ていると、以外とシステム絡みのキーワードで検索してアクセスされる方が多いみたいで、最近の脱線具合を思うと、ちと心苦しい。
てなわけで、たまには真面目な事もやってみよう。
今回は、JavaScriptでフィボナッチ数を計算してブラウザの性能を比較してみようというものだ。
数日前に「FireFoxの課題」みたいなブログを見つけて「しまった、先を越された!」と思いつつベンチ結果をまとめてみた。
フィボナッチ数列とは、まぁ、う~ん、ぐぐってちょうだい
n番目の数値とかを求めようとすると、指数関数的に再帰処理が増えていくわけだ。
だから、JavaScriptインタプリタのスタック処理とかの性能の差が如実に反映されることになる。
もっとも、再帰させずに求める方法もあるんだけど、ベンチマークだから。
実行させるプログラムは以下のとおり。40番目のフィボナッチ数を求める。
5回実行し、中間値を求める。
<script type="text/javascript">
<!--
ffunction fib(n) {
if (n < 2) {
return n;
}
return fib(n-2) + fib(n-1);
}
start = new Date();
res = fib(39);
document.write(res, ", ", new Date() - start, " msec");
// -->
</script>
PCスペックは、
CPU : Intel Core Duo T2500(2.00GHz), Memory 2GB
数年前のDell INSPIRON 6400だ。
まずは、いきなりFedora Core 12から(だって常用なんだもん)
| ブラウザ |
時間(秒) |
備考 |
| Firefox(3.5.8) |
44 |
TraceMonkey |
| Konqueror(4.4.0) |
107 |
KDE標準ブラウザ KJS |
| Google Chrome(5.0) |
3.0 |
Google V8 |
| Opera(10.10) |
90 |
Futhank |
| Epiphany(2.28.2) |
36 |
GNOME標準ブラウザ Webkit |
お次はWindowsXP SP3。しかもFedora Core 12 + VirtualBox 3.1.4 (CPU : 1個, Mem : 1GB)
| ブラウザ |
時間(秒) |
備考 |
| Internet Explorer(6) |
遅すぎ |
|
| Firefox(3.6) |
48 |
TraceMonkey |
| Google Chrome(4.0) |
4.0 |
Google V8 |
| Opera(10.50) |
4.8 |
Carakan |
| Safari(4.0.4) |
5.3 |
Nitro |
いよいよ最も需要が多そうなネイティブWindows。でもXP SP3。
なんか順番間違ってるよなぁ…。
CPU、メモリのスペックは同じ。HDDを差し替えただけ。
はて?ディスクの回転数ちがったっけな?OS比較じゃないからいいか。
| ブラウザ |
時間(秒) |
備考 |
| Internet Explorer(7) |
531 |
|
| Firefox(3.0.8) |
43 |
なんだったっけ? |
| Firefox(3.6) |
49 |
TraceMonkey |
| Google Chrome(4.0) |
3.5 |
Google V8 |
| Opera(9.64) |
61 |
調査中 |
| Opera(10.50) |
4.5 |
Carakan |
| Safari(4 Public beta) |
18 |
Nitro |
| Safari(4.0.4) |
4.9 |
Nitro |
| Netscape Navigator 4.78 |
1110 |
シャレだよ、シャレ |
IE厳しいなぁ。
しかも「このページのスクリプトが、Internet Explorer の実行速度を遅くしています。スクリプトを実行し続けると、コンピュータが反応しなくなる可能性があります。スクリプトを中断しますか?」とかふざけたことぬかしやがる。
こんなやつはレジストリ変更じゃ!
HKEY_CURRENT_USER¥Software¥Microsoft¥InternetExplorerにStylesってキーを新規に作って、MaxScriptStatements というDWORD値を作る。
未設定の時は、5000000。これを900000000にする。ひでぇ。
このままだと行ったっきりになっちゃうので、ベンチが終わったらデフォルトに戻すか削除する。
今度嫌がらせでIE6も測ってみよう。
Firefoxは新鋭ブラウザに一歩遅れをとっている感じ。なんとも寂しい限りだ。
しかも新しい方が遅い…。Firefox4のTamarinに期待したい。
Google Chromeのバカっ速ぶりに感動。このベンチ以降、Chromeに乗り換えた。
Safari、Operaも現行バージョンで大きな進化をとげ、Google Chromeに迫るタイムを叩きだしている。
JavaScript engineに限って言えば、Chrome、Safari、Operaの各最新版を現世代とすると、Firefoxは一世代、IEは二世代以上遅れている感じだ。
Netscape Navigatorはシャレです。PCにたまたま入ってたので。
もっともブラウザの性能はJavaScriptだけじゃないけどね。
フィボナッチ数 ベンチマーク JavaScript
Comments