以降の章は、2010年4月9日に掲載した「特集:Internet Explorer 9(プレビュー版)概説」という記事を、正式版の情報に改訂するとともに、いくつかの新情報を追記したものです。
Ajaxが脚光を浴びてからの近年、WebにおけるJavaScriptの利用と重要性はますます高まってきている。GmailやGoogleドキュメントなどのWebアプリケーションでは、大量のJavaScriptコードが実行されており、JavaScriptエンジンの性能がそのWebアプリケーションの性能に直結するようになってきた。このため、いま、各ブラウザのJavaScriptエンジンの高速化が強く求められているのだ。
もちろんIE8までのIEでも、このような時代背景を踏まえて、(JavaScriptコードを実行するための)スクリプト・インタプリタのパフォーマンス改善に尽力してきた。しかし(マイクロソフトの説明によると)、このような純粋なスクリプト・インタプリタは、通常、少量のJavaScriptコードしかない従来のWebページには最適ではあるものの、大量のJavaScriptコードを持つ今日のWeb 2.0型アプリケーション、そして明日のHTML5アプリケーションには向いていない。そこでマイクロソフトはIE9で、これまでのJavaScriptエンジンを捨て、まったく新しいJavaScriptエンジンを構築することを決定したのである。
“Chakra”(チャクラ)というコード名で呼ばれる、そのJavaScriptエンジンでは、スクリプト処理のパフォーマンスが(従来よりも)大きく改善されている。実際、下に掲載したグラフを見ると、2011年3月8日時点で最速のJavaScriptエンジンはIE9 最終版(Final Release)となっている(WebKits.org提供のSunSpider JavaScript Benchmarkを使った、マイクロソフトによる調査)。
IE9の“Chakra”では、インタプリタ(=Webページ上でJavaScriptコードを解析して実行)からコンパイラ(=JavaScriptコードを高品質なネイティブ機械語コードにコンパイル)、型システム、ライブラリ、メモリ管理などのランタイム機能、DOM相互運用性など、さまざまな側面でJavaScript処理性能の改善が図られた。以下では、それぞれの機能的な特徴を簡単に紹介しよう。
●高速なスクリプト・インタプリタ
IE9では、起動時にページを即座に実行する高速なスクリプト・インタプリタが搭載される。技術的な詳細は不明だが、「レジスタ・ベースのレイアウト」「効率的な命令コード」「型の最適化」などを用いて、より高速なページ表示を実現している。
●バックグラウンド・コンパイル(マルチコアにおける並列処理)
JavaScriptエンジンの性能を稼ぐには、JavaScriptコードを高品質に最適化された機械語コードにコンパイルする必要がある。特に今日のJavaScriptを多用したWebアプリケーションにはこの作業が必須となる。しかしながら、そのコンパイルに時間が掛かるという欠点がある。
これを解決するためにIE9では、「アプリケーションの初期実行を止めることなく、バックグランドでコンパイルを行い、コンパイルされたメソッドをアプリケーションに押し戻す」というアプローチを採用している。
このコンパイル時にIE9は、バックグランドでマルチコアCPUにおける並列処理を行い、PCの資源をフルに活用する。つまり、デュアルコアやクアッドコアのマシンになると、IE9の性能はさらに高速になるというわけだ。今後、CPUのマルチコア化はさらに進んでいくと予想されるので、数年後の将来を考えると、これは賢いアプローチといえるだろう。
次の上下に並べた2つの画像は、IE8とIE9プレビュー版での処理速度の違いを、フォアグラウンド処理とバックグランド処理に分けて視覚化したものである。これを見ると、確かに、IE9の方が効率的に処理されていることが分かる(※このデータは、IE9正式版のものではないので、参考程度の情報と考えてほしい。もちろん正式版ではプレビュー版よりもさらに最適化されたことが予想される)。
●型の最適化
JavaScriptコードの実行性能を大きく向上させるポイントの1つに、効率的な型システムを構築することが挙げられる。これを実現するために“Chakra”では、最新の動的言語実装に共通する優れた技術(例えば多相インライン・キャッシュなど)を積極的に採用している。
●ライブラリ最適化
JavaScriptコードの実行性能は、文字列、配列、オブジェクト、正規表現といったJavaScriptランタイム・ライブラリの出来具合にも当然影響を受ける。こういったライブラリ機能も、現実のWebサイトでのJavaScriptコードの利用に合わせて注意深くチューニングしている。
マイクロソフトが現実世界のWebサイトをいろいろと分析した結果、「JavaScriptコードには、一連のよくあるパターンが存在することに気付いた」という。例えば正規表現では、数百の正規表現を作成しても、実際にはそのうちの少ししか使っていないことなどだ。こういった普遍的なケースで性能が向上するように、最適化やチューニングを行っている。
なお“Chakra”では、アプリケーションの変化や、Webでよく用いられるパターンの変化、ハードウェアの変化に、スムーズに適応していくことを目標としているとのこと。時代の変化に伴い上記の性能改善の内容も変わっていくのかもしれない。
次回後編では、 HTML5/CSS3/SVG対応について紹介する。
Copyright© Digital Advantage Corp. All Rights Reserved.