Browser

Microsoft Edge(Project Spartan, Internet Explorer) 、ブラウザ周辺、Web フロントエンド開発、UI、など

Microsoft Edge まとめページ

Microsoft Edge と Chakra での JavaScript パフォーマンスアップデート

いつもの公式ブログより

blogs.windows.com

 

今回はかなり省略して訳。

 

パフォーマンス向上を重要なテーマとして扱っております。
フィードバックやテレメトリーデータからユーザー体験を悪くする可能性のあるパターンを整理し Chakra を調整しています。

 

関数のメモリ最適化

スクリプトのコードパターンでは関数を小分けにしてそれらを組み合わせることがあり、それらはプロファイラーが JIT コードを生成する際パフォーマンスを向上させる利点があります。

このようなパターンでのメモリ消費最適化ため、Chakra は各関数で使用されるメタデータ形式をリファクタリングしました。
(内部的にこの関数を FunctionBody と呼ばれている)

一見微妙な最適化ですが、かなりの数の機能と組み合わせると、メモリのオーバーヘッドを大きく減らすことができます。

f:id:x67x6fx74x6f:20160624020933p:plain

FunctionBody の多くのポインタとカウンターは、Memory-saving structures に移動させられる

 

イベントハンドラーの遅延解析

今日のウェブではインタラクティブな場合 ほぼすべてのページにボタン、クリック、マウスオーバー、その他多くのイベント動作を定義する イベントハンドラーを使用しています。
これらは関連付けられているイベントが発生しない限り、 イベントハンドラーは基本的にはデッドコードです。

現在の Microsoft Edge と Chakra では呼び出されるまで、 パースや、イベントハンドラーのバイトコード生成を遅らせます。
その結果、最適化だけではなく、起動時間の短縮や未使用のハンドラーからメモリを節約します。

関数のメモリ最適化と遅延解析はページごとのメモリ使用量を一緒に圧縮できます。

 

統合的な JavaScript のベンチマーク

OCTANE 2.0、JETSTREAM 1.1 でのベンチマーク。
主要ブラウザより速いことがわかります。

f:id:x67x6fx74x6f:20160624020953p:plain

64-bit 環境の Windows 10 Insider Preview
System Info: Dell Optiplex 7010 Intel(R) Core(TM) i5-3475S CPU @ 2.90GHz (4 cores) 4GB ram

スポンサーリンク