Firefox web browser - Faster, more secure & customizable |
Mozillaは現在、Firefoxにおけるメモリアロケーションに関してさまざまな方法を模索しており、最近の実装はすでに通常負荷時でメモリの使用量を削減することに成功している。この新しいメモリアロケーションは高負荷時にはどういった振る舞いを見せるのか、メモリアロケーション関連の開発に従事しているGregor Wagner氏がベンチマークの結果をScalability - Garbage Collection stats and thesis updatesにて発表した。
実施されたベンチマークは、Most Popular Websites on the Internetから上位150のサイトを1.5秒ごとに新規タブで開いてくというもの。最後にすべてのサイトのロードが終わるまで90秒待機すると説明されている。ベンチマークに使われたJavaScriptはMemBenchにて確認できる。使われたブラウザはそれぞれ最新の開発版。
Firefoxは6分15秒ほどで処理が完了しているが、Chromeは29分近くかかっている。メモリの使用量もFirefoxが2.02GBなのに比べて、Chromeは2.82GBとFirefoxと比べても多めとなっている。このケースではChromeはレンダリングプロセス、メインプロセス、ヘルパープロセスの3つのプロセスが動作し、それぞれ1.5GB、1.3GB、200MBのメモリを消費していたと説明されている。レンダリングプロセスは100% CPUを使い続けたと説明がある。Firefoxは150タブ開いた状態でも通常通り操作できたが、Chromeは70タブを超えたあたりから動作が緩慢になり、150タブ開いた状態ではページスクロールもできない状態になったという。
MemBenchの方法ではレンダリングプロセスが新しく生成されないため、レンダリングプロセスが生成されるバージョンのMemBenchを使ってのベンチマーク結果も掲載されている。処理時間は28分弱と高速化されているが、マルチプロセス処理に多くのリソースが割かれた割には、高速化が弱いといえる。メモリの使用量も全体で5GBほどと説明があり、割に合わない高速化であることがわかる。
ユーザが利用するタブの平均数は10前後だと言われている。ほとんどのユーザは1から20程度のタブしか使わず、それ以上のタブを使うのは少数のヘビーユーザーに限られる。また、そもそもGoogleはタブを20程度までしか使われないということを前提にしてChromeを設計しているため、150というタブを開いた状態は、その仕組み上、性能を発揮できないようだ。
Scalability - Garbage Collection stats and thesis updatesでは、1タブのFirefoxと150タブのFirefoxでV8ベンチマークを実施した結果も掲載しており、それほど性能が劣化していないことも紹介している。現在のFirefoxは基本的にシングルプロセスアーキテクチャを採用しており、内部で区画を区切る仕組みを採用している。メモリアロケーションもこれまで何度も研究開発が実施され、優れたものになっている。
Gregor Wagner氏はこうしたベンチマークの結果を踏まえた上で、多くのタブを使うような方法でブラウザを使っているのであれば、Firefoxを使う方がいいだろうと締めくくっている。