ニュース

「Google Chrome」はこうしてまた速くなった ~開発チームが最近の最適化手法を解説

局所的に速い新パーサー、ポインター圧縮の最適化、ハイエンドモバイル向け高速版を投入

公式ブログ「Chromium Blog」

 「Google Chrome」はプロジェクトの発足当初から「スピード」を理念の1つに掲げており、これまでもさまざまな高速化技術が投入されてきた。米Googleは4月13日(現地時間)付けで公開した公式ブログ「Chromium Blog」の記事で、最近のバージョンに導入された高速化技術を解説している。

HTMLパースの改善と特定機能の最適化

 まず、JavaScriptで使用頻度の高い、「Object.prototype.toString」と「Array.prototype.join」という2つの関数にターゲットを絞った最適化方法を特定した。CSSのInterpolableColorにターゲットを絞った改善も実装されたという。

 また、JavaScriptでDOMを更新する際に非常によく使われる「innerHTML」で、専用の高速パーサーが追加された。このテクニックは「WebKit」にも取り込まれ、macOSで2.25%、iOSで2.6%ほど「Speedometer」ベンチマークの結果が改善されたという。

「V8」と「Oilpan」におけるより効率的なポインター圧縮と割り当て

 スクリプトエンジン「V8」とDOMオブジェクトのガベージコレクター「Oilpan」では、メモリを節約するためにポインター圧縮と呼ばれるテクニックが用いられている。しかし、トラフィックの多いフィールドで圧縮処理が発生すると、広範囲でパフォーマンスに影響が出てしまう。

 そのため、このようなケースでのポインター圧縮を避ける最適化が施された。また、JavaScriptの「undefined」のような頻繁にアクセスされるオブジェクトをメモリベースの先頭へ移し、より高速なマシンコードでアクセスできるようにするなどの最適化も施されているとのこと。

 以上の改善を積み重ねたことにより、「Speedometer 2.1」ベンチマークにおいて3カ月間で10%のパフォーマンス向上が実現されたという。

「Speedometer 2.1」ベンチマークにおいて3カ月間で10%のパフォーマンス向上が実現

ハイエンドモバイルを最大限に活用

 Android向け「Chrome」はパフォーマンスよりもフットプリント、つまりファイルサイズや動作時のリソース消費量をできるだけ小さくすることを重視した最適化が施されている。これはPCと比べ非力なデバイスが多いことを考慮してのことだが、なかには廉価PCをしのぐハイパフォーマンスなデバイスもないわけではない。こうしたハイエンドデバイスはリソースに余裕があるので、フットプリントよりもパフォーマンスを優先した方がよいだろう。

 そのため、ハイエンドデバイスではバイナリサイズよりも速度を重視したコンパイラーフラグを利用したバージョンの「Chrome」を提供しているとのこと。速度重視版では、フットプリント重視版に比べ「Speedometer 2.1」ベンチマークを30%高速に処理できるという。