巷には"新Mac"の噂がチラホラ。CPUやチップセットについては、Intelなどチップベンダーのロードマップを参照すれば概要をつかめるとして、量りかねるのが筐体デザイン。いわゆるネットブックが売れている現状、価格も重要なポイント。MacBookもiMacも、そろそろモデルチェンジしていい時期なだけに、要注目ですね。

さて、今回は「SquirrelFish Extreme」と「TraceMonkey」について。言わずもがな、前者はSafariの、後者はFirefoxの次バージョンに搭載予定のJavaScriptエンジン。コードをネイティブコードに変換してから実行する、いわゆるJust In Time (JIT) コンパイラとしての機能が共通の特徴だ。両者のうちどちらが速いか、どの点で秀でているのか、ベンチマークテストを通じて検証してみよう。

「SunSpider」を試す

ベンチマークを実行するにあたり、利用した環境はMacBook Pro 2.33GHz (Core 2 Duo) / 2GB RAM、Mac OS X 10.5.5。SquirrelFishとTraceMonkeyのバイナリは、10月5日時点における最新版のWebKit r37300と、10月1日付けでビルドされたfirefox-3.1b1pre (latest-tracemonkeyとして公開されているナイトリービルド) を利用している。両者のほかに、現行版のSafariとFirefox (Safari 3.1.2、Firefox 3.0.3) についても、比較対象として測定を行った。

まず試したのは、定番のJavaScriptベンチマーク「SunSpider」。トータルでは、SquirrelFish Extreme搭載のWebKitがダブルスコア近い差をつけてTraceMonkeyを上回る、という結果(表1図1)に終わった。SquirrelFish Extremeは、SafariとFirefoxに比べても約4倍という圧倒的なパフォーマンスだ。

一方、テストの詳細に目を移してみると、「bitops」(ビット演算のテスト) および「math」 (整数 / 浮動小数点演算のテスト) 項目ではTraceMonkeyがSquirrelFish Extremeを凌駕していることがわかる。特にmath項目は、SquirrelFish Extremeの2倍以上高速であり、他の項目と大きく異なる。

■表1: SunSpider 0.9の実行結果
SquirrelFish Extreme (WebKit r37300) Safari 3.1.2 TraceMonkey (firefox-3.1b1pre) Firefox 3.0.3
3d 142.2 394.2 145 406
access 83 520 177.2 433
bitops 50.6 451.4 45.6 305.4
controlflow 8.6 88.4 37.2 38.4
crypto 55.2 231 75.2 181.8
date 86.8 285 289.2 370.2
math 118.2 446.4 51.6 343
regexp 44.6 209.4 257.2 278
string 283 649 509 812.4
TOTAL 872.2 3274.8 1587.2 3168.2

図1: SunSpider 0.9の実行結果

Mozilla謹製JavaScriptベンチ「Dromaeo」を試す

MozillaのJavaScriptベンチ「Dromaeo」

2008年4月公開のJavaScriptベンチ「Dromaeo」も試してみた。SunSpiderがJavaScriptエンジンに限定してパフォーマンスを測定することに対し、このDromaeoはDOMや各種JavaScriptライブラリを含めて測定する。その意味では、Webアプリケーション実行環境の実態に即したベンチマークツールといえるだろう。また、SunSpiderがWebKit開発チームの手によるものに対し、こちらはMozilla謹製。我田引水の予防というわけではないが、両方を試すほうがフェアなことも確かだ。

その結果(表2図2A~図2C)だが、処理に要した時間の合計値でいえば、SquirrelFish Extreme / WebKitがTraceMonkeyより約30%高速となった。個別のテストを見ると、ループ内で配列を用いた整数演算を行う「Fannkuch」の差が特に大きく、SquirrelFish Extreme / WebKitのほうが7倍以上高速。DOM Queryなど、TraceMonkeyが上回る項目も一部あったが、おおむねSquirrelFish Extreme / WebKitのほうが1.5~2倍ほど高速だといえる。

まとめ ~確実に速くなる次期Safari~

2つのベンチマークテストからは、SquirrelFish Extremeは次期SafariのWebアプリ実行環境 (Ajax処理系) を確実に高速化する、という結論が導き出される。JavaScriptエンジンに特化したSunSpiderはともかく、現実のAjax処理系に近いDromaeoでも現行のSafari / Firefoxのみならず、TraceMonkeyにも大差を付けたということは大きい。

だが、OS Xには「Google Chrome」がリリースされていない。Safariと同じWebKitベースでありながら、独自のJavaScriptエンジン「V8」を搭載したこのWebブラウザに期待する向きもあるだろう。具体的な時期は不明だが、OS X版がリリースされることは確実なので、そのとき改めて"OS Xで最速のWebアプリ実行環境"を確認してみたいと考えている。

■表2:Dromaeoの実行結果 (単位:ミリ秒、値が小さいほど高速)
SquirrelFish Extreme (WebKit r37300) Safari 3.1.2 TraceMonkey (firefox-3.1b1pre) Firefox 3.0.3
3D Mesh 106 166.8 170 151.4
Base 64 89.2 403.4 168.2 239.4
DNA Sequence Alignment 71 212.4 237.2 248.6
DOM Attributes 32.6 58.8 49.6 77.8
DOM Attributes (Prototype) 11 25.4 26 30.6
DOM Attributes (jQuery) 10 14 15 25.8
DOM Events (Prototype) 9.2 19.2 22.2 31.8
DOM Events (jQuery) 10.4 23.4 30.2 38
DOM Modifications 211.4 318 376 418.4
DOM Modifications (Prototype) 116.4 160.6 322.4 1367.4
DOM Modifications (jQuery) 304 567.2 693.2 925.8
DOM Query 167 260.8 170.2 360
DOM Query (Dojo) 122.4 213.2 204 261.4
DOM Query (ExtJS) 128.4 251.4 230.8 340.8
DOM Query (Mootools) 555.8 580.6 275.4 295.6
DOM Query (Prototype) 736.8 754 620.8 685
DOM Query (Yahoo UI) 303 638.2 822.6 856.4
DOM Query (jQuery) 207.8 333.2 314.2 448.2
DOM Style (Prototype) 22 57.8 77.2 90.2
DOM Style (jQuery) 35.8 117.4 79 135
DOM Traversal (Prototype) 85 230.2 616 1177
DOM Traversal (jQuery) 396.4 593.6 838.4 1478.4
Fannkuch 22.8 245.2 172.6 161
N-Body Rotation and Gravity 328.6 663.2 41.2 182.8
Partial Sum Calculation 248.8 614.6 181.4 205.8
Prime Number Computation 11.8 67.2 13.6 53.4
Prime Number Computation (2) 82.4 210.4 30.4 101.6
Recursive Number Calculation 16 103.4 56.4 47.8
Rotating 3D Cube 313 488.6 53 152.6
Spectral Norm of a Matrix 94 234.4 77.4 72.6
Traversing Binary Trees 16 76.8 59 59.2
TOTAL 4865.6 8703.4 7043.6 10719.8

図2A:Dromaeoの実行結果(1)

図2B:Dromaeoの実行結果(2)

図2C:Dromaeoの実行結果(3)