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:
Post a Comment
You can use some HTML elements, such as <b>, <i>, <a>, also, some characters need to be entity referenced such as <, > and & Your comment may need to be confirmed by blog author. Your comment will be published under GFDL 1.3 or later license with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.