高速JavaScriptエンジン"SquirrelFish"正式発表 - 性能アップはこれから

    後藤大地  [2008/06/06]

    SquirrelFishのマスコットキャラ? (squirrelfishは日本語でイットウダイを意味する)

    RIA時代の到来へ向けJavaScriptエンジンの改善が進んでいる。先日、Safari3に対して4倍高速化したWebKit新JavaScriptエンジン"SquirrelFish"が注目されたが、まもなくして2日(米国時間)、WebKitブログにおいて正式にSquirrelFishがアナウンスされた。

    SquirrelFishはWebKitの新しいJavaScriptエンジンのコード名。SunSpider JavaScriptベンチマークを使った測定ではWeKit3.0と比較して4.3倍、WebKit3.1と比較して1.6倍の高速化が報告されている。これは同開発の最初の成果にすぎず、今後の開発でさらにパフォーマンスの向上が計画されている。

    WebKit, SquirrelFishベンチマーク結果 - 発表ブログより抜粋

    SquirrelFishは最新の仮想マシン研究の結果を反映して設計されたレジスタベース、ダイレクトスレッドに動作するバイトコードエンジン。組み込みコピープロパゲーションとワンパスコンパイラを使ってシンタックスツリーからバイトコードが遅延生成させるようになっている。

    SquirrelFishが導入される前のWebKit JavaScriptインタプリタではほかのインタプリタがそうであるように、一旦プログラムをパースして状態ツリーに変換してから評価する方式を採用していた。この方法は実行する必要のないノードを何度もパースしたりインダイレクトに処理を実行したり、多数のデータコピーが発生するといった遅延要素が含まれている。

    SquirrelFishではまずこのベースアーキテクチャを変更することなく各種高速化手法を適用、シンタックスツリーという従来のアーキテクチャの性能を最大化してからバイトコードへの移行をはじめたとされている。バイトコード化することで不要な処理を削減しノードを走査する処理が不要となり、さらにパフォーマンスの向上が実現されたとされている。

    現状で実現されているバイトコード処理は今後の開発へ向けたはじまりにすぎず、今後はコンスタントプール命令やスーパーインストラクション、レジスタ操作を明示した操作、命令複製やコンテキストスレッドなどのアドバーンストディスパッチテクニック、Windowsにおける改善などを実現しさらにパフォーマンスの向上を目指すとしている。

    SquirrelFish VMの命令ドキュメントはすでに早期版が公開されている。同発表ではThe Structure and Performance of Efficient InterpretersVirtual Machine Showdown: Stack Versus RegistersThe Implementation of Lua 5.0など高効率仮想マシン関連技術の論文が紹介されている。興味があるデベロッパは同論文をチェックしてみるといいだろう。

    関連記事

    関連サイト

    関連したタグ

    新着記事

    特設サイトの情報

      求人情報

      人気記事

      一覧

      イチオシ記事

      新着記事

      特別企画

      転職ノウハウ

      あなたの仕事適性診断

      4つの診断で、自分の適性を見つめなおそう!

      Heroes File ~挑戦者たち~

      働くこと・挑戦し続けることへの思いを綴ったインタビュー

      はじめての転職診断

      あなたにピッタリのアドバイスを読むことができます。

      転職Q&A

      転職に必要な情報が収集できます

      スカウト転職する

      企業からアプローチのメッセージが届きます。

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