6月6日、Chromium Blogが「How Chrome achieved the highest score ever on Speedometer 3」と題した記事を公開した。この記事では、Chromeが新しいSpeedometer 3.0ベンチマークツールで最高スコアを達成するために行った最適化について詳しく紹介されている。
Speedometer 3.0は、Google、Apple、Mozilla、Intel、Microsoftなどの企業が共同で開発したブラウザ性能測定のための新しいベンチマークである。このベンチマークを活用して、Chromeはパフォーマンスの最適化を行い、ユーザーにより速いブラウザ体験を提供することができた。2022年5月にSpeedometer 3が誕生して以来、ChromeのSpeedometerスコアは 72%向上 し、それがユーザーにとってのパフォーマンス向上に繋がっている。
ここでは、Speedometer 3が開発される過程でそのパフォーマンスを慎重に追跡し、ChromeがSpeedometer 3で最高スコアを達成するためにさらに最適化した方法について詳しく見ていく。
1. ワークロードの最適化
Speedometer内のワークロードを分析し、Chromeが最も時間を費やす関数にターゲットを絞った最適化を実施。例えば、SpaceSplitString関数では不要な境界チェックを削除し、重複するスタイルシートの検出と単一スタイルシートインスタンスの参照により最適化を行った。また、パスとアークの描画コストをメモリ割り当ての調整により削減し、フォームエディタ作成時の不要な処理を排除した。
2. 適切なコードの選定
高いパフォーマンスを実現するための重要な戦略は、コードの階層化だ。Intel は、過去の階層化の決定を記憶するプロファイル ガイド階層化を V8 に提供した。これにより、関数が過去に安定して階層化されていた場合、将来の実行時に積極的に階層化されるようになった。
3. ガベージコレクションの改善
Speedometer 3で約3%の進展をもたらしたのはガベージコレクションの改善である。
V8のガベージコレクターは、レンダラーのアイドル時間を利用してアプリケーションコードと干渉しないようにしている。最近の変更は、このメカニズムを拡張し、アクティブなレンダラーでもアイドル時間にガベージコレクションを実行するようにした。具体的には、DOMのファイナライゼーションコードもアイドル時間に実行されるようにし、DOM要素をラップするオブジェクトのレイアウトをよりコンパクトにすることで、メモリプレッシャーを軽減し、ガベージコレクションに費やす時間を短縮した。
詳細はHow Chrome achieved the highest score ever on Speedometer 3を参照していただきたい。