大幅なパフォーマンスの向上

Firefox Quantumにおいて、もっとも注目されるのは、パフォーマンスの改善であろう。これまで、ライバルのブラウザと比較され「遅い」といった評判から、シェアを落としてきた。そこで、体感でも速さを感じるレベルにパフォーマンスを向上させたのが、新しいCSSエンジンのQuantum CSS(別名はStylo)である。

少し技術的になるが、xmlやhtml文書の多くは木(ツリー)構造をしており、最初のルート(根)から、枝状に各要素や属性(DOMノード)が延びていく(DOMツリー)。スタイルシステムにおいては、CSSの内容がDOMノードにマッチするかの判定を行う。さらに、計算済みスタイルが適用されないDOMノードは、親のノードから引き継ぐか、デフォルトのスタイルを適用しなければならない。これらの処理が非常に負荷の高いものとなっている。

Quantum CSSでは、この処理を並列化した。最近のCPUでは複数のコアを持つものが多い。そこで、個々のコアに対し、DOMツリーを分割して担当させるのである。図3は、10月31日の記者発表会で配布された資料である。

図3 ブラウザのアーキテクチャ

Firefox Quantumでは、複数の処理をしているという意味である。一方で、互換性の維持などの問題も指摘されている。これに対しては、当面、古いCSSエンジンを搭載し、必要に応じて使い分けるといった対策がとられる(将来的には、古いCSSエンジンは削除されるだろう)。

Quantum CSSは、Mozilla自身が開発したRust言語にて記述され、その行数は85,000行とのことである。古いCSSエンジンのGeckoでは、c++言語で160,000行であったので、約半分になった。このことも、高速化に寄与していると思われる。

では、実際「Firefox 52と比較して2倍速い」というのはどうなのか。実際のテストで使われたSPEEDOMETER 2.0を使い、筆者の環境でも試してみた。まずは、Firfox 52である。

図4 SPEEDOMETER 2.0(Firfox 52)

次いで、同じ環境におけるFirefox Quantumの結果である。

図5 SPEEDOMETER 2.0(Firfox Quantum)

残念ながら、筆者の環境では、2倍まではいかなかった。しかし、十分に早くなったという点は納得できる。実際、β版リリース当時から、Firefox Quantumを使っているが、時折「このサイト、こんなに早かったかな」と感じることもある。まさに体感で速くなったということはまちがいない。次の動画は、記者発表会でも使われたものであるが、Chromeとの比較である。

動画 Chromeとの比較

著名なサイトを実際に表示させてみて、その時間を比較したものである。すべてのサイトで、Firefox Quantumが速くはなかったが、Chromeを凌いでいる結果も多い。さらに、タブを大量に開く際の動作に関しても大きく変更された。具体的には、1691個もの大量のタブを同時に開く動作を行った。旧バージョンでは8分近くかかったのに対し、Firefox Quantumでは15秒であったとのことである。

また、マルチプロセスアーキテクチャにより、メモリ消費量も削減された。図5は、記者発表会で配布された資料である。

図6 ブラウザごとのメモリ消費量

これによれば、Firefoxがもっとも少ない結果となっている。