A Quick Introduction to Tamarin Tracing - by Chris Double氏

Webシステム開発用の言語としてJavaScriptが日に日に重要な位置を獲得しつつある。複雑なシステムを開発するとなるとその実行速度が問題視されるJavaScriptだが、コンパイル技術の導入やJITの導入で状況は改善されようとしている。特にFirefox 4で導入が予定されているAdobe Systemsから寄贈されたTamarinはJavaScriptの実行速度を劇的に向上させることになる。

Chris Double氏が3日(米国時間)、同氏のブログにおいてA Quick Introduction to Tamarin Tracingのタイトルのもと興味深いドキュメントを公開た。同氏は同ドキュメントで"tracing jit"と呼ばれる技術を活用した実装"Tamarin Tracing"について言及し、その効果を簡単なベンチマークとともに示した。

"tracing jit"は同ドキュメントによればコードの実行を追跡し、よく実行されるポイントを判別してコンパイルを実施する技術のこと。同技術を使って実装された"Tamarin Tracing"はオープンソースソフトウェアとして公開されており、Mercurialリポジトリ経由で取得できる。

同氏はフィボナッチ関数を作成し、いったんJavaScriptコードをabcバイトコードへコンパイル。コンパイルしたバイトコードを"tracing jit"技術が有効になった状態の仮想マシンと、無効になった状態の仮想マシンで実行し速度を比較している。実行結果はJITが有効になった仮想マシンの方が13倍以上高速というものだ。繰り返し処理でJITが効きやすい状況が作られているわけだが、注目に値する処理速度といえる。

ベンチマークに使われたフィボナッチ関数 - 同ブログより抜粋

tracing jitが有効になった仮想マシンの方は13倍以上高速に動作 - 同ブログより抜粋

同氏はこうした結果を踏まえたうえで、Tamarin TracingのインタプリタがForthで開発されていること、abcバイトコードがForthで採用されている低レベル命令で記述されていること、tracing jitはこの低レベル命令に対してコンパイルを実施していること、ForthからC++へのコンパイラはPythonで実装されていることなどを指摘している。同技術はJavaScriptに限らずほかのスクリプト言語にも応用できそうだ。特にバイトコードにForthを採用したことは注目に値する。ほかのスクリプト言語への応用も踏まえてかなり興味深いプロダクトだ。