Microsoft Edge と Chakra での JavaScript パフォーマンスアップデート
いつもの公式ブログより
今回はかなり省略して訳。
パフォーマンス向上を重要なテーマとして扱っております。
フィードバックやテレメトリーデータからユーザー体験を悪くする可能性のあるパターンを整理し Chakra を調整しています。
関数のメモリ最適化
スクリプトのコードパターンでは関数を小分けにしてそれらを組み合わせることがあり、それらはプロファイラーが JIT コードを生成する際パフォーマンスを向上させる利点があります。
このようなパターンでのメモリ消費最適化ため、Chakra は各関数で使用されるメタデータ形式をリファクタリングしました。
(内部的にこの関数を FunctionBody と呼ばれている)
一見微妙な最適化ですが、かなりの数の機能と組み合わせると、メモリのオーバーヘッドを大きく減らすことができます。
FunctionBody の多くのポインタとカウンターは、Memory-saving structures に移動させられる
イベントハンドラーの遅延解析
今日のウェブではインタラクティブな場合
ほぼすべてのページにボタン、クリック、マウスオーバー、その他多くのイベント動作を定義する
イベントハンドラーを使用しています。
これらは関連付けられているイベントが発生しない限り、
イベントハンドラーは基本的にはデッドコードです。
現在の Microsoft Edge と Chakra では呼び出されるまで、
パースや、イベントハンドラーのバイトコード生成を遅らせます。
その結果、最適化だけではなく、起動時間の短縮や未使用のハンドラーからメモリを節約します。
関数のメモリ最適化と遅延解析はページごとのメモリ使用量を一緒に圧縮できます。
統合的な JavaScript のベンチマーク
OCTANE 2.0、JETSTREAM 1.1 でのベンチマーク。
主要ブラウザより速いことがわかります。
64-bit 環境の Windows 10 Insider Preview
System Info: Dell Optiplex 7010 Intel(R) Core(TM) i5-3475S CPU @ 2.90GHz (4 cores) 4GB ram