4大ブラウザのJavaScript実行速度などをSCHEMEON.jsで比較してみたら驚いた

(※最新のバージョンではこのエントリーの内容と相当異なる結果となりました。こちらをご覧ください。)
SCHEMEON.jsはJavaScript上で動くSchemeインタプリタで、ブラウザ固有の機能は使っていないため、ブラウザのJavaScript実行速度などの性能を比較するのにちょうどいいんじゃないかと思うようになりました。
そこで、4大ブラウザのJavaScript実行速度などなどをSCHEMEON.jsで比較してみました。

比較するブラウザ

  • ブラウザは、InternetExplorer、OperaFireFoxChromeで、2012年6月30日時点の最新のバージョン。
  • InternetExplorerは32ビットバージョンと64ビットバージョンの2つを比較。
  • ということで、5つのブラウザで比較することに。
  • インストールした状態で比較し、何か特別なアドオンなどはインストールしていない状態で比較。

比較の仕方

;フィボナッチ関数
(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

評価してみる

  • OperaIE(32bit)はほとんど実行速度が同じ。
  • IE(32bit)とIE(64bit)は実行速度に2倍程度違う。速いのは32bitの方。
  • ChromeOpera,IE(32bit)と比較して4〜5倍程度遅い。
  • FireFoxOpera,IE(32bit)とChromeの中間くらい。IE(64bit)とトントン。

もしかして、使用メモリの差が結果に表れているのだろうか…

ChromeOperaの差は、使用メモリ(ヒープ)に違いがありすぎ、実行中の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)と同じくらいかも。
ちょっと面白い結果ですね。