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倍の高速化が報告されている。これは同開発の最初の成果にすぎず、今後の開発でさらにパフォーマンスの向上が計画されている。
SquirrelFishは最新の仮想マシン研究の結果を反映して設計されたレジスタベース、ダイレクトスレッドに動作するバイトコードエンジン。組み込みコピープロパゲーションとワンパスコンパイラを使ってシンタックスツリーからバイトコードが遅延生成させるようになっている。
SquirrelFishが導入される前のWebKit JavaScriptインタプリタではほかのインタプリタがそうであるように、一旦プログラムをパースして状態ツリーに変換してから評価する方式を採用していた。この方法は実行する必要のないノードを何度もパースしたりインダイレクトに処理を実行したり、多数のデータコピーが発生するといった遅延要素が含まれている。
SquirrelFishではまずこのベースアーキテクチャを変更することなく各種高速化手法を適用、シンタックスツリーという従来のアーキテクチャの性能を最大化してからバイトコードへの移行をはじめたとされている。バイトコード化することで不要な処理を削減しノードを走査する処理が不要となり、さらにパフォーマンスの向上が実現されたとされている。
現状で実現されているバイトコード処理は今後の開発へ向けたはじまりにすぎず、今後はコンスタントプール命令やスーパーインストラクション、レジスタ操作を明示した操作、命令複製やコンテキストスレッドなどのアドバーンストディスパッチテクニック、Windowsにおける改善などを実現しさらにパフォーマンスの向上を目指すとしている。
SquirrelFish VMの命令ドキュメントはすでに早期版が公開されている。同発表ではThe Structure and Performance of Efficient Interpreters、Virtual Machine Showdown: Stack Versus Registers、The Implementation of Lua 5.0など高効率仮想マシン関連技術の論文が紹介されている。興味があるデベロッパは同論文をチェックしてみるといいだろう。