Firefox web browser - Faster, more secure & customizable |
ブラウザの性能指針のひとつとしてJavaScriptの実行速度の速さが注目されている。これはWebページやWebアプリケーションがますますJavaScriptに依存しはじめているためで、JavaScriptの実行速度がそのままブラウザを使っているときの快適さに結びついているからだ。
JavaScript実行速度の指針としてはJavaScriptベンチマークが使われることが多い。SunSpiderやV8が代表的だが、どのブラウザも現在の手法で実現できる限界値まで高速化してきており、これ以上は効果的な比較はできないとみられている。またIEBlogで指摘されているように、現在主に使われているベンチマークは特定の性能を計測するもので、実際のWebサイトやWebアプリケーションにおける性能と関連していないとみる向きもある。Mozillaはより実際の利用に近いベンチマークを実現する必要があるとして、Krakenと呼ばれるベンチマークの開発を進めている。
こうした取り組みのひとつの側面といえる興味深い取り組みがJavaScript Checkers - Mystery Bail Theaterで紹介されている。MozillaでJavaScript JITエンジンの開発に従事しているDavid Anderson氏のブログで、チェッカーゲームの強さとブラウザの性能について簡単に紹介している。
David Anderson - JavaScript Checkers (Fast Checkers)動作例 |
David Anderson - JavaScript Checkers (Slow Checkers)動作例 |
David Anderson - JavaScript Checkers (OO Checkers)動作例 |
David Anderson氏はJavaScriptとHTML5のみでチェッカーゲームを実装。AIアルゴリズムにはモンテカルロ木探索を採用している。モンテカルロ木探索は2006年あたりからゲームアルゴリズムで注目を集めるようになった手法。囲碁などのAIとして有効な手段のひとつとみられている。
実装されているアルゴリズムの基本はランダムに手を打っていくというものだが、これでは効率が悪いので評価が低くなると解っているものは排除。さらに探索を高速にするために木構造を取り入れている。基本的には高速に処理できればできるほど、多くの手を模索していい手が探索できる仕組みになっている。
チェッカーインデックス値 | Fast Checkers | Slow Checkers | OO Checkers |
---|---|---|---|
Firefox 4 Beta | 14035 | 9018 | 9100 |
IE9 PP6 | 14579 | 8234 | 8067 |
Opera 11 Alpha | 13165 | 8178 | 8749 |
Safari 5 | 12442 | 8045 | 8700 |
Chrome 9 Canary | 4160 | 2060 | 2343 |
JavaScript CheckersにはこのゲームをFierfox 4 betaやIE9 PP6、Opera 11 alpha、Safari 5、Chrome 9 Canaryなどに適用した場合のスコアを参考値として掲載している。この値は大きいほどいい手を選択できることを示している。
JavaScriptベンチマークの結果は特定の処理を示すものであるため、実際のWebページやWebアプリケーションでの快適さを示すものとしては直結しない。チェッカーの実装も同じだが、ブラウザで動作するJavaScriptで実装されたゲームであり、JavaScriptの処理速度の速さがそのままゲームの強さに繋がっているため性能指針としてわかりやすい。IE9 PPで提供されているデモサイトもそうだが、今後はこうした実際のアプリケーションから算出される数値を性能インデックスとして利用する事例が増える可能性がある。