4月11日、WebKitが「Speedometer 3.0のためのWebKitとSafariの最適化」と題した記事を公開した。
この記事では、WebKitチームがSpeedometer 3.0ベンチマークに基づいて行った一連のパフォーマンス最適化について詳細に解説されている。特に、JavaScriptCoreの最適化、ガベージコレクションの改善、SVGレイアウトの高速化、DOMコードの改善など、幅広い技術的進歩が強調されている。
Speedometer 3.0とは
Speedometerは、ウェブブラウザのパフォーマンスを測定するためのベンチマークテストであり、特にウェブアプリケーションの応答性とスクリプトの効率を評価する。最新版の3.0はほぼ一ヶ月前の3/12に発表されたばかりであり、WebKitやBlink、Geckoなど、様々なブラウザエンジンの開発者が開発に参加している。
このベンチマークは、実際のウェブアプリケーションの動作を模倣する多くのサブテストで構成されており、JavaScriptやDOM APIの使用が豊富なテストでブラウザのパフォーマンスを試験する。Speedometer 3.0の結果は、ブラウザが日常的に直面する様々な要求にどれだけ効率的に対応できるかを示す重要な指標である。
JavaScriptCoreの改善
JavaScriptCoreにおける改善点は、新しいツールの導入と既存機能の最適化に焦点を当てている。新しい内部JSONフォーマットがJavaScriptCoreのサンプリングプロファイラーに導入され、これによって、実行中のJavaScriptのホットスポットをより効率的に分析できるようになった。
ガベージコレクションの最適化
記事では、JavaScriptCoreにおけるガベージコレクションとインクリメンタルスイーピング(メモリ回収の逐次実行)の改善が詳述されている。
これらのプロセスは アイドル時に遅延して行う ように変更され、ウェブページのパフォーマンスに与える影響が最小限に抑えられるようになった。これにより、同時に複数のサブテストでJavaScriptオブジェクトを大量に確保する場合でも、パフォーマンスが低下することなく処理できるようになった。
SVGレイアウトの高速化
SVGコンテンツに特化した最適化も行われており、特にバウンディングボックスの計算を速めることでレンダリング時間を削減している。また、SVGテキストレイアウトのコードで見られたO(n^2)アルゴリズムを排除し、複雑なSVGアニメーションやインタラクションのパフォーマンスを向上させた。
DOMコードの改善
DOMコードの改善においては、余計なDocumentFragmentの生成を避けるようになった。これにより、特にJavaScriptが多用されるウェブアプリケーションでのDOM操作の効率が向上している。
これらの改善により、Speedometer 3.0のスコアは全体的に約60%向上し、これはWebKitとSafariが提供するウェブ体験の質が大きく向上したとされている。
技術的な詳細や更に詳しい情報については、Optimizing WebKit & Safari for Speedometer 3.0を参照されたい。