4大ブラウザのJavaScript実行速度などをSCHEMEON.jsで比較してみたら驚いた
(※最新のバージョンではこのエントリーの内容と相当異なる結果となりました。こちらをご覧ください。)
SCHEMEON.jsはJavaScript上で動くSchemeインタプリタで、ブラウザ固有の機能は使っていないため、ブラウザのJavaScript実行速度などの性能を比較するのにちょうどいいんじゃないかと思うようになりました。
そこで、4大ブラウザのJavaScript実行速度などなどをSCHEMEON.jsで比較してみました。
比較するブラウザ
比較の仕方
- 次のサイトにアクセス。 http://www.d2.dion.ne.jp/~ujiie/schemeonjs/
- ここで、Schemeのフィボナッチ関数と、たらいまわし関数による実行速度の比較を実施。
- フィボナッチ関数は (fib 25)、たらいまわし関数は (tarai 10 5 0) 。結構ヘビー。
- フィボナッチ関数、たらいまわし関数の定義は次の通り。なお、上のサイトにアクセスすればすでにフィボナッチ関数、たらいまわし関数は定義済み状態。
;フィボナッチ関数 (define (fib n) (if (< n 2) n (+ (fib (- n 1)) (fib (- n 2))))) ;たらいまわし関数 (define (tarai x y z) (if (<= x y) y (tarai (tarai (- x 1) y z) (tarai (- y 1) z x) (tarai (- z 1) x y))))
実行環境
VAIO J VPCJ118で実行しました Jシリーズ | “VAIO” | ソニー
比較結果!
いやはや結構違うものです。
- (fib 25)実行結果 (単位は秒)
順位 | ブラウザ | バージョン | 試行1回目 | 試行2回目 | 試行3回目 | 平均 | 1位との比 |
1 | Opera | 12.00 | 11.069 | 11.15 | 11.072 | 11.097 | 1 |
2 | InternetExplorer | 9.0.8112.16421 | 11.5 | 11.776 | 11.64 | 11.63866667 | 1.048811991 |
3 | InternetExplorer | 9.0.8112.16421 64-bit Edition | 22.602 | 22.477 | 22.452 | 22.51033333 | 2.028506203 |
4 | FireFox | 13.0.1 | 27.437 | 27.471 | 28.07 | 27.65933333 | 2.492505482 |
5 | Chrome | 20.0.1132.47 m | 50.161 | 50.268 | 50.317 | 50.24866667 | 4.528130726 |
- (tarai 10 5 0)実行結果 (単位は秒)
順位 | ブラウザ | バージョン | 試行1回目 | 試行2回目 | 試行3回目 | 平均 | 1位との比 |
1 | Opera | 12.00 | 14.832 | 14.9 | 14.813 | 14.84833333 | 1 |
2 | InternetExplorer | 9.0.8112.16421 | 15.372 | 15.383 | 15.555 | 15.43666667 | 1.039622853 |
3 | InternetExplorer | 9.0.8112.16421 64-bit Edition | 31.736 | 31.728 | 31.647 | 31.70366667 | 2.135166685 |
4 | FireFox | 13.0.1 | 36.962 | 36.277 | 36.712 | 36.65033333 | 2.468312942 |
5 | Chrome | 20.0.1132.47 m | 69.134 | 68.804 | 68.644 | 68.86066667 | 4.637602425 |
評価してみる
もしかして、使用メモリの差が結果に表れているのだろうか…
ChromeとOperaの差は、使用メモリ(ヒープ)に違いがありすぎ、実行中のGC頻度の違いだったりするんじゃないだろうかとか。
そこで、(tarai 10 5 0)を1回実行したのちの使用メモリの様子をタスクマネージャーで調べてみました。
順番は使用メモリの少ない順。複数のプロセスがあるときはその合計。単位はKB。
順位 | ブラウザ | バージョン | 使用メモリ | 1位との比 |
1 | InternetExplorer | 9.0.8112.16421 | 27616 | 1 |
2 | InternetExplorer | 9.0.8112.16421 64-bit Edition | 31340 | 1.134849363 |
3 | Chrome | 20.0.1132.47 m | 42388 | 1.5349073 |
4 | FireFox | 13.0.1 | 44564 | 1.613702202 |
5 | Opera | 12.00 | 60928 | 2.206257242 |
うーやはりOperaは富豪的にメモリを使っている雰囲気です。
IEの使用メモリの少なさはOSに近いからでしょうか。IE(32bit)は実行時2つのプロセスが動いていてそれぞれ20304,7312。
Chromeは使用メモリの少なさもありますが、ブラウザ1個開いているときにプロセスが3つあったのが印象的。タブ1つにプロセス1個として、ほかにプロセスが2つ動いていることになりますね。3つのプロセスの使用メモリはそれぞれ、20888,13516,7984ということで、一つのプロセスだけ見ればIE(32bit)と同じくらいかも。
ちょっと面白い結果ですね。