ニュース

「Chrome 89」は省メモリでハイパフォーマンス ~Googleが改善策を解説

メモリアロケーター「PartitionAlloc」を全面利用。Androidでは64bitバイナリを展開

公式ブログ“blog.chromium.org”

 米Googleは3月11日(現地時間)、「Google Chrome 89」で行ったパフォーマンス改善について明らかにした。メモリアロケーター「PartitionAlloc」の採用範囲を広げることで、Windows版のブラウザープロセスで最大22%、レンダラーで8%、GPUで3%の大幅なメモリ削減を実現した。ブラウザーの応答性も最大9%向上しているという。

 ヒープメモリの確保(アロケート)はプログラムのさまざまなところで行われているが、一般的にコストの高い処理でもある。そのため、メモリアロケートの回数を減らしたり、の処理を改善することは全体的なパフォーマンスアップにつながる。

 そこで「Chrome」のレンダリングエンジン「Blink」では、以前から「PartitionAlloc」という独自開発のメモリアロケーターを採用している。「PartitionAlloc」はC言語の「malloc」よりもメモリ確保のレイテンシー(遅延)が少なく、スペースの効率性が高く、セキュリティにも優れている。

 「Chrome 89」では、64bit Windows版とAndroid版で「malloc」をインターセプト(横取り)して「PartitionAlloc」に置き換える措置がとられた。これにより、あらゆる場所で「PartitionAlloc」が使われることになり、この先進的なメモリアロケーターの恩恵をより多く享受できるようになった。

 また、メモリの割り当て方法だけでなく、不要になったメモリを破棄する処理も改善されている。たとえば、スクロールで画面に表示されなくなった画像など、ユーザーの目に触れない部分でメモリを積極的に破棄することで、一つのタブ当たり最大100MiB(一部の人気サイトでは20%以上)のメモリを取り戻せるようになった。

 さらに、Mac版ではバックグラウンドタブのメモリ使用量を削減する処理(タブ スロットリング)が追加され、最大で8%のメモリを削減できたとのこと。これは、場合によっては1GiB以上にもなるという。タブ スロットリングは他のプラットフォームですでに導入されているものだが、「Apple Energy Impact」のスコアで最大65%もの改善がみられ、Macデバイスの温度を下げ、ファンの騒音を減らすことに貢献しているという。

 Android向けの「Chrome」では、これ以外にもいくつかの改善が行われている。モバイルデバイスはPCに比べリソース制約が厳しく、バッテリー持続時間にも配慮する必要がある。「Chrome」のコンポーネントはWebブラウザー以外にもさまざまなアプリケーションで利用でされており、「Chrome」の改善はスマートフォン全体のパフォーマンスアップにつながるだろう。

 まず、パッケージングとランタイムの最適化が行われ、リソースの枯渇によるクラッシュが削減された。メモリ使用量の5%の改善、起動時間の7.5%の短縮、ページロードの最大2%の高速化が達成された。これは「Google Play」ストア側でデバイスに最適化されたAPKを生成・配信する「Android App Bundle」と、これらの機能の分割して必要に応じて読み込むことで起動コストを減らすAndroid OSの機能によるものだ。

 次に、最新のAndroid端末(「Android 10」以降および8GB以上のメインメモリ)では64bit版の「Chrome」バイナリが利用できるようになった。これにより、ページの読み込みが最大8.5%速くなり、スクロールや入力の遅延に関しても28%スムーズになる。また、「Chrome」の安定性も向上しているという。

 最後に、“フリーズドライ タブ”(Freeze-Dried Tabs)と呼ばれる技術が採用された。これは実際のタブとは別に、タブのスクロールやズーム、リンクのタップなどに機能を限定した軽量版のタブを保持しておくものだ。軽量版のタブはスクリーンショットと変わらないサイズで、「Chrome」の起動時に利用される。実際のフル機能のタブはバックグラウンドで読み込まれるため、ユーザーが体感するレスポンスは向上するだろう。同社によると、この機能によりAndroid版「Chrome」の起動が13%速くなっているという。

Freeze-Dried Tabs in Chrome