この記事は、Chakraエンジンのパフォーマンス最適化結果の概要と、Edge, Chrome, FirefoxのOctaneとJet Streamベンチマークの結果に関する概要である。
Redmondのブラウザーメーカーは、開発者から見たMicrosoft Edgeで述べたように、Web技術、Web標準、遵守に向けて彼らの態度を変更した。いくつかの古いIEコンポーネントを破棄と新しいレンダリングエンジンにHTML, JavaScript, CSS標準の実装を決めただけでなく、彼らの長い課題であったパフォーマンスに対処しはじめた。
IEの主なパフォーマンスのボトルネックは、JavaScriptに関する処理にあり、MicrosoftはEdgeの新しいバージョンのChakraでこれらの一部を修正した。これらの拡張のいくつを提示する(詳細はこれとこれ):
- Chakraは、より少ない最適化を実行するシンプルなJITコンパイラを持っており、その結果コードをすぐに実行することができる。プロファイリングは継続され利用可能なときには、エンジンはフルJITコードに切り替わる。シンプルJITもまた、バックグラウンドスレッドで実行される。
- 基盤となるハードウェアに応じて、Chakraは複数のJITスレッドを起動して、より高速なコンパイルが可能になる。それにより、TypeScriptは最大30%高速になる。
- 最終的なGCマークパスは、メインスレッドとGCスレッドの両方で実施可能で、最終的なマークパスのために最大48%のメインスレッド割り込みを削減した。
- コードのインライン化オーバーヘッドは、静的データを使うことで低減されている。
- Chakraは、クロスファイルスクリプトのインライン化が可能になった。
- 今後のES6の
const
では、変数が変更されたかどうかをチェックする必要がなくなる。const
を使わないWebアプリの場合、Chakraは変更されないグローバル変数を識別してconst
としてそれらを扱うことで、検索する時間を節約することができる。 - JITコンパイラーは、大半のトップ10K Webサイトで使用されているUglifyJS で生成された縮小されたコードをよりよいパフォーマンスで実行できるように最適化する。
- JITはtry-catchブロック内のコードを最適化できるようになった。
これらの改善と最適化により、Edgeはどのぐらい早くなったのだろうか。 Microsoftによると、Edgeは下の図に示すように、ChromeやFirefoxよりも高速になった:
(画像を大きくするには、クリックする。ベンチマークは、MicrosoftによってHP Compaq 8100 Elite, i7 860 2.80GHz (4 cores), 12GB RAM上の64ビットWindows 10 TPと64ビットブラウザで実施された。)
私たちはIE11と比較して、どれだけEdgeのパフォーマンスが向上したかをお知らせした。それはまた、GoogleとMozillaが彼らのブラウザーのベンチマークポイントをさらに上げる余地があることを意味する。