Mozilla Flux

Mozilla関係の情報に特化したブログです。

タブの切り替えをスムーズにするTab Warming機能について(Firefox 61以降)

Windows版・Linux版Firefox 61では、Tab Warmingと呼ばれる機能が有効化されている(Bug 1456602*1。タブを切り替える前にいわばウォームアップを済ませておく機能で、ユーザーに見えないところで処理を先取りするため、結果的にタブの切り替え処理が速くなったように感じられる。

タブ切り替えのウォームアップとは具体的に何だろうか。現行のFirefoxはマルチプロセス化されているので、タブを切り替える場合、メインプロセスから切り替え先のタブを司るcontentプロセスに対し、レイヤーツリーを生成するよう指示が出され、その結果がcompositorプロセスに送られて合成(Compositing)の処理が行われる*2。ウォームアップとは、この一連の流れをタブの切り替えが行われる前から開始しておくという意味だ。その後タブの切り替えが実行されなかったときは、レイヤーツリーは捨てられる。

ウォームアップが開始されるタイミングは複数ある。代表的なのは、切り替え先のタブ上にカーソルがホバーしたとき(Bug 1385453)と、タブを閉じるボタン上にカーソルがホバーしたとき(Bug 1430292)である。そのほか、Ctrl+Tabパネルを表示させたとき(Bug 1430153)やマウスの中ボタンの押下を検出したとき(Bug 1472230:ただしFirefox 63から)も対象だ。いずれも手動または自動でタブが切り替わる直前の操作が選ばれている。

Tab Warming機能の性質上、レンダリング処理に時間のかかるWebページほど効果を発揮しやすい。もっとも、タブの切り替えに要する時間は、平均値・中央値ともに減少することが判明しており、特別なケースでなくともユーザーはメリットを享受できる。ちなみに、browser.tabs.remote.warmup.maxTabsの設定値(デフォルトは3)を変更することで、効果範囲の調節も可能だ。

f:id:Rockridge:20180715164711p:plain
タブ切り替え時間の平均値(Mean)と中央値(Median)が低下