Hatena::ブログ(Diary)

300clp

2007-06-12 Firefoxを遅くさせる最大原因はアドオン

Firefoxを遅くさせるアドオン要因

Webアプリケーションの開発者はFirefoxを愛用しているケースが多い

その理由として拡張機能が豊富であることが第一に挙げられる


優秀なアドオンとしてAll-in-One GesturesやGreasemonkey、

WebDeveloper、Firebug、ScrapBookなどが利用される


しかしFirefoxを使い込むにつれてアドオンが増え

その結果、起動時間・表示時間に遅れが出ることになる

その最大要因はアドオンであり数種のアドオンによって遅くなる


ではブラウザ表示を遅くさせるアドオンはどれか

具体的な数字で比較できるのか?

この表示時間について検証

01.検証

試験環境

【   OS    】 XP SP2 Pro、Vista Ultimate

【   .CPU.  】 PentiumD820 2.8GHz

【   Mem   】 Samsung DDR2-667 1G×2 5.0-5-5-13

【  .種類  】 Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.8.1.4) Gecko/20070515 Firefox/2.0.0.4

【  .種類  】 Mozilla/5.0 (Windows; U; Windows NT 6.0; ja; rv:1.8.1.4) Gecko/20070515 Firefox/2.0.0.4

試験用テーブル

ブラウザテストは多重テーブルとスクリプトでベンチマークした

  1. 六重テーブル
    Table6Test-4096表示
  2. 七重テーブル
    Table7Test-16384表示
    Table7Test-16384表示ミラーサイト2
  3. 簡易スクリプト
    簡易スクリプト

※転送量の都合によりコードを圧縮(07/06/15)

七重テーブルをミラーサイトに変更してます(07/06/16)

ミラーサイト修正(07/06/20)

所要時間数値

※数値は表示所要時間(Sec) (07/06/24現在)(圧縮後再計測)

使用ブラウザTable6Table7スクリプト
MS-IE7(XP)1.1564.4372.923
MS-IE7(Vista)1.2224.6242.121
Sleipnir2.5.12(XP)1.1524.4372.921
Sleipnir2.5.12(Vista)1.1104.4212.060
Opera9.21(XP)1.0653.8161.828
Opera9.21(Vista)1.0533.7331.910
Safari3.02(XP)0.1881.7941.908
Safari3.02(Vista)0.2031.8101.965
Firefox2.0.0.4(Default)(XP)1.0314.3124.225
Firefox2.0.0.4(Default)(Vista)1.0503.8884.250
Firefox2.0.0.4(add-on)(XP)7.89028.797---


β版Safariはかなり速い

Firefox(add-on調整前)は5倍程度遅かった

{圧縮前のFirefox(Default)(XP)は1.469、6.079(Sec)}(07/06/15)

Firefoxのスクリプト処理に遅延がある



02.各アドオンによる表示時間

最も負荷を与えるテーブルタグを使用

外れ値を除外する為、5回計測内のメジアンを記録

コードを圧縮したためベンチマーク再計測(07/06/15)

再計測データ


アドオン名Table6Table7表示
All-in-One Gestures(マウスジェスチャ)0.18.01.1884.445ok
All-in-One Sidebar(拡張設定、再起動)0.7.11.0154.797ok
Adblock ++SSE(AdblockのC++版)0.1.41.0785.094ok
Tab Mix Plus(タブカスタマイズ)0.361.0224.355ok
MR Tech Local Install(拡張設定、再起動)5.3.2.31.0314.359ok
Menu Editor(メニューカスタマイズ)1.2.3.31.0314.250ok
TinyMenu(メニュー置き替えカスタマイズ)1.4.41.0164.313ok
Autocomplete Manager(アドレスバー拡張)2.01.0164.216ok
IEView(IE変換)1.3.31.0004.469ok
OperaView(Opera変換)0.61.0004.328ok
TextLink(テキストリンク開く)1.3.2006.10007021.0314.453ok
Linky(リンク全開)2.7.11.0164.015ok
GoogleBarLite(検索)4.6.11.0315.094ok
GTranslate(翻訳)0.3.11.0154.437ok
PicLens(google等イメージスライドショ−)1.5.2.21.0634.547ok
ScrapBook(スクラップ)1.2.0.81.0164.406ok
ThumbStrips(履歴管理)1.0.2.11.0415.017ok
PearlCrescentPageSaver(スクリーンショット)1.51.0164.438ok
GmailSpace(ファイルストレージ)0.561.0164.422ok
FlashGot(ダウンロード)0.5.991.0164.657ok
VideoDownlorder(Youtube等ダウンロード)1.1.11.1114.578ok
LinkAlert(リンク先案内)0.721.0164.891ok
UserAgentSwitcher(UserAgent変更)0.6.101.0164.813ok
ConfigurationMania(about:config設定)1.08.20071.0164.328ok
FEBE(Profile、拡張機能バックアップ)4.0.5.0.0.01.0314.859ok
Sage(RSS)1.3.101.0154.031ok
Japanize(登録サイト日本語化)0.81.0164.188ok
JavascriptActions(Script拡張)2.3.0.20070105011.0164.795ok
Stylish(CSS変更)0.511.0164.391ok
DOM Inspector(DOM精査)1.8.1.41.0164.784ok
ViewSourceChart(ソース)2.5.021.0154.594ok
WebDeveloper(ソース)1.1.41.0154.594ok
FoxyTunes(音楽再生)2.9.5.111.0674.711ok
QuickRestart(再起動)1.1.01.0164.328ok


アドオン名Table6Table7表示
Linkification(テキストリンク開く)1.3.31.0945.725やや
IETab(IE変換)1.3.3.2007.05281.6696.898遅延
GoogleToolbar for Firefox 3.0.2007.0525W1.9388.797遅延x
GoogleNotebook(小スクラップ)1.0.0.171.2195.656やや
bbs2chreader(ビューアー)0.4.21.5316.471遅延
noScript(セキュリティ)1.1.4.9.0706221.5316.711遅延
McAfeeSiteAdvisor(セキュリティ)26.31.2885.221僅か
Greasemonkey無効時(Script)0.7.20070607.01.8758.750遅延
Greasemonkey使用時(Script)0.7.20070607.02.57810.578遅延x
Adblock Plus(Adフィルター)0.7.5.15.22319.531遅延x
HtmlValidator(文法チェック)0.8.3.91.2195.525やや
GoogleBrowserSync(設定同期)1.3.2007.0523.01.3916.422遅延
Firebug(Webソース、デバッグ)1.051.8758.539遅延
FirebugJapanese(Firebug日本語版)1.051.9698.565遅延


アドオン毎にCasheを削除して計測

Adblock Plusは公式フォーラム推奨のリスト17項目をフィルタ適用(07/06/26)

※Greasemonkey使用スクリプトは

googleautopager.user.js (2007/04/05 ver 0.9)、wdfimagelayerbase.user.js、googleimagelayer.user.js

nicovideon.user.js、YouTube Downloader Ver1.3、2006/01/mixi_simple_header.user.jsを使用(07/06/15)

nicovideon.user.jsをniconico_downloader.user.jsに変更(07/06/24)

Adblock ++SSE追加(07/08/09)

Greasemonkeyで使用するスクリプトにより速さに違いが出る可能性がある

またSylishでもCSSのAdfilterが多いもの、特に300項目以上フィルターを持つAd Blocking Filtersetパックなどは

遅延する傾向があるのでフィルター数が多い場合は注意が必要

03.再調整

この為、調整する

IETab(IE変換)、Google Toolbar for Firefox、Firebugは無効にする

  1. LinkificationはText Link(テキストリンク開く)へ変更
  2. IETabはIEView(IE変換)へ変更
  3. Google Toolbar for FirefoxからGooglebar Liteへ変更 (追記07/06/13)
  4. bbs2chreader(ビューアー)は使用時以外はアドオンを無効にしておく
  5. noScriptはMcAfeeSiteAdvisorに変更するかJavascriptを手動設定にする
  6. Firebugは使用時以外アドオン自体を無効にする
  7. Greasemonkeyは使用時以外アドオン自体を無効にする
    広告除外などWebサイトの外観を変える程度ならAdblockやスクリプトを使うよりも
    Stylish等でCSSを変更したほうが軽くなる
    またはAdblock ++SSEに変更する(追記07/08/09)

これ以外の一般のアドオンを追加しても特に遅くならなかった

また一度すべてのアドオンを切って再起動して

アドオンを入れ直すのも効果があった

デフォルト

1.469、6.079(Sec)

調整前

7.890、28.797(Sec)

調整後

1.485、6.225(Sec)

04.結論

Firefoxが重い要因の第一はアドオンであり

その選択によって重くなる


05.about:config設定

about:configによる詳細設定

(アドレスバーにabout:configを入れて設定名をクリックして値を修正する)

IPv6

一般的にIPv6通信規格を切る方法が効果あると言われている

(アドレスバーにabout:configを入れnetwork.dns.disabeleIPv6をクリックして値をtrueにする方法)


コード変更の為、再計測(07/06/16)


IPv6値Table6Table7JsCpu
false(デフォルト)1.0314.3124.225
true(切断)1.0354.3434.344


このテストではIPv6通信規格を切る効果はあまりなかった

DNS取得の問題なので加えて別の検証をする必要性がある(07/06/16)


06.アドオンの差

遅延しないアドオンと遅延するアドオンの差は何か

なぜアドオンを入れると遅延してしまうのか?

スクリプトを多用すると遅くなる傾向があり、相性問題の可能性もある

HTML全体を走査する機能は遅延の原因になるのかもしれない

ブラウザのレスポンスを改良すれば現在よりも早くブラウジングできるようになる


もじらかけらさんの分析によると遅延原因として

  1. ページを読み込んだ際にページの内容を書き換えるタイプ
    Greasemonkey など
  2. ページを読み込んだ際にページの内容を解析するタイプ
    Firebug など
  3. ページや画像を読み込む際にリンク先の URL をチェックするタイプ
    IETab など

と分類されている (07/07/01)


ブラウザは本来Webサイトを閲覧することを目的としたアプリケーションソフトである

Firefoxを軽くするにはアドオンを解決することが手っ取り早い

しかし多少遅延があってもこれらのアドオンはその便利な機能性のため手放せないのが実情ではないか?


これを解決するために単にアドオンを削るのではなく

  1. プロファイル管理を一般ブラウズ用、Web開発用など目的に沿って分類し使い分ける
  2. Firefox以外のブラウザとの併用で用途別に使い分ける (07/08/24)

ことでこの問題の解決になるだろう


高機能ブラウザであるほどタブ機能はもちろん、安全性や検索機能だけでなく

レスポンスの良さ、フォントの美しさや描画性能を求めるようになる

アドオンはブラウザだけでは用意できない機能を拡張機能として

より活用できるように開発者がFreeSoftwareとして提供してくれるものである

遅延解消の為にレスポンス向上を進めるなら一度数値を確認して目的に沿って使い分けていくのが良いかもしれない