2010-03-19

IE9のJavascriptの実装について

IEBlog : The New JavaScript Engine in Internet Explorer 9

要点だけまとめ。

最近は、Javascriptを、本物のプログラムとして使うサイトが増えた。ページのCPU使用率の、八割方を、Javascriptが占めているようなページすらある。

そういうわけで、Javascriptをネイティブコードにコンパイルして、最適化するのが、最近の流行である。

動的な言語であるJavascriptを早くするというのは、なかなか難しい。ただに、ネイティブコードを生成すればいいと言うものでもない。Javascriptのような、動的な言語に対して、効率のいいネイティブコードを生成するのは、やはり難しい。が、テクニックは、いくつも考案されている。

問題は、効率のいいネイティブコードを生成するのには、コストがかかるということだ。

多くのサイトでは、Javascriptの、全体のCPU時間に占める割合は、せいぜい数割である。ネイティブコードの生成に、アホみたいに時間をかけていたのでは、ユーザーはいらつく。ユーザーとしては、ページに必要なリソースをダウンロードしたならば、ただちに描画をして、実際のコンテンツを見たいわけだ。それが、Javascriptのコンパイルのために、しばらくお待ちください、となったのでは、たとえ、最適化後は、快適に操作できたとしても、ユーザーは不満である。

Javascriptの高速化も重要だが、ページを、できるだけ早く描画するのも、重要である。

そういうわけで、IE9では、ページを読み込みしだい、まず、インタプリターでJavascriptを実行して、ページを描画する。と同時に、Javascriptのコンパイルを、バックグラウンドで進める。ネイティブコードに置き換わった部分から、差し替えていく。こうすることによって、ユーザーは、Javascriptのコンパイルを待たずとも、すぐにコンテンツを見ることができる。

また、バックグラウンドでJavascriptのコンパイルが行われるので、マルチコア環境でも、スケールできる。

さらに、インタプリターも書き直して、レジスターベースのモダンなopcodeを使うようにし、高速化した。

それから、正規表現などのライブラリも、高速化している。

また、MSは、Javascript言語の発展のために、ECMA Script 委員会に所属している。

No comments: