【レポート】

Velocity 2010 - Firefox、Chrome、IE9、三者三様の高速化への取り組み

1 JavaScriptでネイティブコードに迫る - Firefox

    Yoichi Yamashita  [2010/07/12]

    WebブラウザのHTML5の実装が進み、今年後半にはGoogleのChrome OSを搭載したネットブックが登場する。ブラウザはコンテンツを表示するためのソフトからアプリケーションを実行するための環境として大きな進化を遂げている。そこで問われるのは実行速度だ。O'ReillyのWebパフォーマンスに関するカンファレンス「Velocity 2010」ではMozilla、Google、Microsoftがそれぞれが20分ずつの時間でスピードに対する最新の取り組みを説明した。

    GoogleのNative ClientデモにJavaScriptで対抗!?

    MozillaのChris Blizzard氏は、時間のほとんどをJavaScriptエンジンの説明に費やした。Chrome、Safari、OperaがBaseline JITを用いているのに対し、現行のFirefoxのTraceMonkeyはUC Irvineで開発されたトレーシング手法Trace Treesを採用したJITコンパイラを搭載している。特定クラスに最適化したネイティブコードを生成することでJavaScriptを高速に実行する。

    Baseline JIT、Tracing、MSVC-02のFFT(高速フーリエ変換)のパフォーマンスを比較。TracingはMSVC-02に肩を並べる

    Tracingが生成するコードは非常に速く、MSVC-02に迫る。ただし、このパフォーマンスを常に発揮できるわけではなく、実際のケースではトレースできずにインタープリタに戻されて立ち往生することが多い。一方Baseline JITはTraceMonkeyのような高度な最適化はできないが、結果にばらつきがない。一長一短である。

    そこでFirefox 4のJavaScriptエンジン「JagerMonkey」では、オープンソースのJavaScript JITであるNitroからアセンブラをインポートし、Baseline JITとTracingのメリットを共存させる。「次世代のWebアプリで、われわれはネイティブコードのスピードを実現する」とBlizzard氏は、その性能に自信を示す。

    同氏は、GoogleのNative ClientのDarkroomデモをJavaScriptで構築した成果を見せた。Googleのデモが15fps程度であるのに対してJavaScriptデモは7fps程度だと言うが、動作はスムースで、こうした成果から「これまでネイティブコードが担っていたものを、JavaScriptで実現できると実感し始めている」と語った。

    関連記事

    関連したタグ

    新着記事

    特設サイトの情報

      人気記事

      一覧

      イチオシ記事

      新着記事

      特別企画

      マイナビニュースマガジン