メインコンテンツまでスキップ

ChromeがSpeedometer 2.0を歓迎!

· 約4分
BlinkとV8チーム

Speedometer 1.0が2014年にリリースされて以来、BlinkとV8チームはこのベンチマークを人気のJavaScriptフレームワークの実際の使用状況の代理として活用し、ベンチマーク上で大幅な性能向上を達成しました。これらの改善が実際のユーザーに利益をもたらしていることを確認するため、実際のウェブサイトを測定したところ、人気のウェブサイトのページロード時間が改善されることでSpeedometerスコアも向上することを観察しました。

その間にJavaScriptはES2015以降の標準により多くの新しい言語機能を追加し、急速に進化しました。同様にフレームワークも進化しており、Speedometer 1.0は時間とともに古くなっています。そのため、Speedometer 1.0を最適化の指標として使用すると、積極的に使用されている新しいコードパターンを測定できないリスクが高まります。

BlinkとV8チームは最近リリースされたSpeedometer 2.0ベンチマークを歓迎します。最新のフレームワーク、トランスパイラ、ES2015機能のリストに適用されることで、再び最適化の主な候補となるこのベンチマークは、実際のパフォーマンスベンチマークツールキットに素晴らしい追加になります。

Chromeのこれまでの実績

BlinkとV8チームはすでに最初のラウンドの改善を完了しており、このベンチマークの重要性を示しています。そして実際のパフォーマンスに集中する旅を続けています。2017年7月のChrome 60と最新のChrome 64を比較すると、2016年中期のMacBook Pro(4コア、16GB RAM)で総スコア(毎分の実行数)が約21%向上したことを達成しました。

Chrome 60と64のSpeedometer 2スコアの比較

Speedometer 2.0の個々の項目にズームインしてみましょう。Reactランタイムの性能をFunction.prototype.bindの改善により倍増させました。Vanilla-ES2015、AngularJS、Preact、VueJSはJSONパーシングの速度向上やその他のパフォーマンス修正により19%〜42%向上しました。jQuery-TodoMVCアプリのランタイムは、BlinkのDOM実装の改善、例えばより軽量なフォームコントロールHTMLパーサーの調整によって減少しました。さらに、V8のインラインキャッシュを最適化コンパイラと組み合わせて微調整することで、全体的に改善をもたらしました。

Chrome 60から64までのSpeedometer 2の各サブテストスコアの改善

Speedometer 1.0と比べて大きな変化は最終スコアの計算方法です。以前は全スコアの平均値が最も遅い項目のみに取り組むことを優先していました。それぞれの項目に費やされた絶対時間を見てみると、例えばEmberJS-Debugバージョンが最速のベンチマークより約35倍長い時間を要していることが分かりました。したがって、全体スコアを改善するにはEmberJS-Debugに焦点を当てることが最も効果的です。

Speedometer 2.0は最終スコアに幾何平均を使用しており、各フレームワークへの均等な投資を好みます。例えば、最近の16.5%のPreact改善を考えてみましょう。その寄与が合計時間に対して小さいからといって、16.5%の改善を無視するのは不公平でしょう。

Speedometer 2.0へのさらなるパフォーマンス改善と、それを通じてウェブ全体への貢献を楽しみにしています。さらに多くのパフォーマンスアップデートをお楽しみに。