現在Googleは、Chromeブラウザーの高速化およびスリム化に一丸となって取り組んでいる。例えば10月に同社は、メモリー消費を削減するプロジェクトを発表した。しかし、Googleは他にも最適化の取り組みを静かに進めており、Windows版Chromeを約15%高速化した。
64ビットChromeのバージョン53および32ビット版のバージョン54から、GoogleはMicrosoftのProfile Guided Optimization[プロファイルに基づく最適化]技術を使用して、Chromeのスタートアップ時間(17%)、新規タブのロード時間(約15%)、および全般的ページロード時間(6%)を短縮した。
Profile Guided Optimization (PGO)は、MicrosoftのVisual Studio開発ツールの一機能で、まず、ユーザーが実際どのようにアプリケーションを操作しているかを測定する。次にこの学習データを用いて、アプリケーションで最も頻繁に使用されている機能の最適化に焦点を絞ってアプリケーションを再コンパイルする。
「Chromeはソースコードに百万以上の関数を持つ巨大なソフトウェアプロジェクトだ」とGoogleのSébastien Marchandが今日の発表で語った。「すべての関数が同等ではない ― 頻繁に呼び出されるものも、ほとんど使われないものもある。PGOは、実行時にどの関数が最もよく使われるかを追跡したデータを使用して、最適化に活用する」
PGOがアプリケーション高速化に用いる最も効果的な技法の一つは、利用頻度の高い関数をメモリーに配置する位置を最適化することで、その結果 ― 少なくとも理想的状況では ― その関数をCPUの高速な命令キャッシュに留めておくことができる。
PGOが実際に動作するしくみの詳細はここで読むことができるが、注目すべきは、既存のChromeコードベースの中に、Googleが最適化して性能を向上できる余地がまだ残っていたという事実だ。それにしてもPGOが必ずしも新しい機能でないことを考えると、これまでGoogleがこの技法を使っていなかったのは少々驚きではある。
[原文へ]
(翻訳:Nob Takahashi / facebook)