X-0023 Geckoのレンダリング速度を速める

このページの情報は間違っていて、誤った解釈が横行している、と指摘されました。「1200ミリ秒待ってから描画を開始する」ではなく「最長で1200ミリ秒待ってから描画を開始する」なのだそうです。ソース中の該当する箇所はnsPresShell.cppの2861行目あたりなんですが、C++は知らないので(コメントの英語も読めましぇん……)、どう読めばいいのやらさっぱりわかりません。このページの情報は眉唾物と思って読んで下さい。はっきりしたことがわかったらまた文面を書き直します。

これはまぁ某所からの引き写しなんですが……せっかくなので覚え書きとして。

ユーザープロファイルディレクトリにあるprefs.jsにuser.jsというテキストファイルを作って user_pref("nglayout.initialpaint.delay", 0); という風な行を書き加えると、環境によってはブラウザのレンダリングを高速にすることができます。FTTHなどの高速な回線を使用している場合にお試し下さい。

解説

Geckoはデフォルトでは、画像やWebページなどがちょっとずつ読み込まれている間の「無駄な再描画」の回数を減らすために、読み込みが始まってから最低1200ミリ秒(つまり1.2秒)経過してからでないと描画を始めないように設定されているそうです。上記の隠し設定は、実は、この「読み込み開始からXミリ秒後に描画を始める」というウェイトの秒数を設定するものです。

この設定が効力を発揮するのは、FTTHなどの高速回線を使用している場合や、読み込むファイルが小さい場合です。データの読み込みがどんなに早く終わっていても、Geckoはデフォルトでは1200ミリ秒経過するまで描画を開始しません。つまり、余計な時間を待たされているのです。そこでこのウェイトをもっと少なくしてやれば、無駄な待ち時間無しでサクサク描画させるという事が可能になるというわけです。特に高速なCPUの場合、読み込みを待つ時間よりも再描画させる時間の方が短くてすむので、思い切って0にしてしまってもいいでしょう――という話。

反対に、ダイヤルアップ接続56kbpsのような低速回線でこのウェイトを小さくするのは逆効果です。まだ読み込みが全然進んでいないうちから描画を始めると、その分、読み込みが進行するたびに無駄な再描画を繰り返さなくてはなりませんので、却って体感速度が落ちてしまいます。また、低速なCPUでも、再描画が増えれば体感速度は落ちます。ある程度高速なCPUを使っていて、且つ、ある程度高速な回線を使っているという場合以外は、このウェイトは下手にいじらない方が無難でしょう。

備考

Mozilla(やNetscape 7)はChimera等と違ってGUIも全てGeckoでレンダリングしているので、Geckoのウェイトをいじると、起動や新しいウィンドウを開く動作など全般に渡って体感速度が向上する……のかな?

英語が読める方は一次情報をあたられるのが吉かと。なんでウェイトの初期値がこんなに長いのかについては「ウェイトが長すぎるぞゴルァ」というバグの中で述べられているようです。

ちなみに、デフォルトが1200というのはMozilla・Netscape 7の場合で、Chimeraでは500に、Phoenixでは元から250に設定されているそうです。うち(ADSL 実効速度4Mbps, CPUはDuron 600MHz)の場合、0にしてみたところそれなりに体感速度が上がったような気がしていますが、実際の所はわかりません……あんまり再描画ばかり繰り返されても困るので、今は150にしてみてます。(CPUをAthlon XPに変えたらもっと短くしてみようと思ってます)

……CPUをAthlon XP 1600+ にして、設定を0に変えてみました。体感速度は上がった気がします。特にもたつきなどもありません。