More Optimization for Firefox 3.6

2010-01-24 21:36 / scribbles

3.6になっても、アマゾンや Twitter など JavaScript を多用しているサイトでは、数分もサイトを使っているとメモリの最大使用量が 1.2 GB になったりするので、もうちょっと色々とやってみた。

3.x が出た当初から言われているように、Firefox はアドオンの登載数やプラットフォームにかかわりなくメモリを大食いするブラウザとして告発されている。そして、そのための対処法は数多く発表されている。もちろん僕も設定を変えてみたり SQLite を最適化するアドオンを使ってみたり、色々とやってはいるのだが、やはり基本的にどこがいけないのかを理解していない限りは文句を言い続けるだけで終わってしまうし、そのうち(ここで何度も公言しているように)Scrapbook アドオンと同等の拡張機能が Chrome など他のブラウザで使えるようになったら、悩むのをやめて Chrome を使い始めるようになってしまうかもしれない。それでは、コンピュータを道具として使う人間の一人として面白くないではないか、と思う。

僕が普段から会社や自宅で Firefox を使って感じるパフォーマンスの問題とは、具体的には次のようなことだ。

  • まず、起動が遅い。会社では Vista SP1、自宅では XP SP3 だが、どちらの環境でも Chrome や IE8 に比べて圧倒的な遅さである。OS にログインしてから初めて起動した場合の立ち上がり所要時間は、IE8 が 20 秒、Chrome が 30 秒、そして Firefox は 2 分である。
  • 自宅では、ポップアップウィンドウを閉じるときに数分フリーズする場合がある。しないときもあるが、フリーズしたら暫く使えなくなるため、Delicious のブックマーク登録ウィンドウなどを使うときは「博打」になる。
  • Flash + JavaScript を使い、一定間隔で画像やテキストを読み込んで表示するようなコンテンツがあるページ(ブログパーツでもカルーセルでもなんでもよい)では、そのページに滞留し続けるとメモリ使用量が鰻登りに上がり、しまいには動かなくなる。JavaScript エンジンに、本当にガベージコレクションが実装されているのか疑問に思うほどだ。
  • WordPress の編集画面でオートセーブが一定回数以上行われると、その画面の記事を保存した後で必ずリビジョンの不整合が起きる。これはブラウザの問題なのか、WordPress で使っているライブラリの問題なのかは分からないが、JavaScript の扱いがおかしいという点は確かだ(現に IE や Chrome では起きない)。

もちろん、オープンソースやら改革開放路線やらプロレタリアート団結やらウェブ 2.0 やら神の国やらアッラーの思し召しやらものづくり大国やら何やらの精神に殉ずる人々の目から見れば、これらは些細な不平不満かもしれない。そして、僕は以上の理由があっても Firefox の使い勝手がいちばん好きでずっと使い続けているわけなので、これらの点を取り上げてすぐにブラウザを換えるつもりにはならない。その理由は、何日か前に述べている。しかしそうは言っても、上記のような不具合を感じる以上は、改善の余地があるかぎり対処するのが健全な民間人の使命でもあろう。

では、まず上記のような現象が何に因っているのかを考えてみよう。各項目はそれぞれ状況が異なる。メモリを大量に消費しているのは、まさにメモリの管理に問題があろうと察しは付くが、フリーズしたりウェブアプリケーションの挙動がおかしくなるのは、メモリとは関係がないかもしれない。実際、メモリだけについて言うと、Firefox は Chrome よりもメモリの消費量が格段に少ないというレポートも出ているわけだが、このようなレポートには(Slashdot でも語られているように)検証用のコードがそれぞれのプロダクトについて中立な結果を出せるかどうかの保証が何もないため、それほど信用できるものではない。ただし、メモリの消費量と上記の現象がそれぞれ無関係である可能性は残るので、すぐさまメモリ消費量が全ての原因だとも言えない。現に、上記のレポートでは 1GB のメモリを食うと言われている Chrome が、僕の環境ではフリーズもなく最もパフォーマンスはよいので、メモリの消費量だけをあれこれ言っていてもだめだということは分かる。それゆえ、最初はタイトルを “Optimization of the lovely memory hogger, Firefox 3.6″ としていたのだが、軽率な判断だと改心して、もっと控えめな言い方に変えたわけである。

できることはやる

ということで、できることはやってみよう。以前の内容と重なるかもしれないが、about:config の画面でほいほい設定を変えると、RequestPolicy で弾かれているわけでもないのに  Google Maps などが全く使えなくなるため、この方法は最後にとっておこう。

初心者向けのサイトでは、「Firefox を定期的に再起動しろ」などと頭を抱えるくらい馬鹿げた小手先の「ハック」が書かれているが、こういったものは Internet Explorer 以外のブラウザをわざわざインストールしてまで使うような人間にとっては「リテラシー」と呼びうる話であろう。そんなことで改善するくらいなら、Mozilla Foundation がとっくにサイトで忠告を出しているか、そもそも一定数以上のテーマやアドオンを保存できないか警告を出すように初期設定しているはずである。

アドオンについては、「議論の余地がある拡張機能のリスト」が公開されているから、ここを参照しておこう。いまのところ僕が自宅で入れているアドオンのリストを示すと、以下の通りである(全て 3.6 に対応)。なお、3.6 に最初から入っている Persona は、削除してもしぶとく「テーマ」として残る(笑)。

  • Delicious Bookmarks
  • Firebug
  • RAMBack
  • RequestPolicy
  • ScrapBook
  • Screengrab
  • Secure Login
  • Smart Bookmarks Bar
  • SQLite Manager
  • SQLite Optimizer
  • Web Developer
  • WOT

上記のリストを見ると、Firebug については、確かに “May cause excessive CPU usage; Firefox may hang when a pop-up window is accessed” と書かれているから、ポップアップウィンドウ(Delicious Bookmarks)を閉じるときにハングしてしまうのはこれが原因かもしれない。切っておこう、というか自宅でサイトの正確なパフォーマンス計測が必要になるほどの「業務」なんて、やろうと思わないから消す。

そして設定画面

そして設定画面なのだが、前回の設定内容をそのまま繰り返すと Google Maps などが全く使えなくなるので、今回は下記の項目だけを変更してみた。

  • browser.sessionhistory.max_entries: “50″ -> “5″
  • browser.sessionhistory.max_total_viewers: “-1″ -> “0″
  • browser.cache.memory.usage: “136000″ -> “0″
  • browser.cache.memory.enable: “true” -> “false”

つまり、ブラウジングしている最中に余計なメモリを使わず、セッションもたくさん記録しておく必要はないと指定したのである。いまのところパフォーマンスはかなり良好だが、しばらくこれで使ってみよう。

[2010-01-23]

会社マシンの Vista SP1 でも設定してみました。メモリの消費量は 60MB くらいで、いまのところ良好です。

コメントがあればどうぞ

monthly archives

yearly archives

archive

microformat (vCard)

KAWAMOTO Takayuki

Mr. KAWAMOTO Takayuki
also known as philsci
(birth day: Sep 20 1968)
live in Osaka city, Osaka, Japan.

promotions

accounts

others