Chrome拡張機能はウェブページを表示する際のパフォーマンスにどれほど影響しているのか?100の拡張機能を調査した結果がコレ
ウェブブラウザに拡張機能やアドオンをインストールすると、さまざまな機能を実行できるようになりますが、あまりにも数が多すぎるとブラウザが重くなってしまうことがあります。ウェブサイトのパフォーマンス監視ツールを提供するDebugBearが、「Chrome拡張機能がブラウザのパフォーマンスに与える影響」について、ブログ記事でまとめています。
2020 Chrome Extension Performance Report | DebugBear
https://www.debugbear.com/blog/2020-chrome-extension-performance-report
◆ダウンロード数トップ100の拡張機能
まずDebugBearは、Chrome拡張機能の中でインストール数トップ100の拡張機能について調査しました。それぞれの拡張機能のインストール数は200万回を超えており、非常に多くの人々が利用しているとのこと。
・ウェブページを表示する際のCPU時間
CPU時間とは、プログラムを実行する際にCPUが処理を行った時間のことです。拡張機能をインストールしたブラウザでウェブページを開くと、拡張機能のJavaScriptやレイアウトロジックの実行によってCPU時間が増加し、ブラウザのメインスレッドがロックされてユーザーの操作に反応できない時間が生じます。そこでDebugBearは例示用ページの「example.com」にアクセスし、拡張機能によって増加するCPU時間について調査しました。
トップ100の拡張機能のうち最もCPU時間が長くなる20個の拡張機能を示したグラフが以下の通りで、グラフ最上部で示される「拡張機能がない状態」のCPU時間は40ミリ秒であるにもかかわらず、拡張機能をインストールすると大幅にCPU時間が増加していることがわかります。最もCPU時間が長いのは、ウェブ上で見つけたページをEvernoteアカウントに保存する「Evernote Web Clipper」で、その次が入力したテキストの文法をチェックする「Grammarly」となっており、いずれもCPU時間が500ミリ秒以上に増加する模様。
・ページレンダリングの遅延
CPU時間の増加はウェブページがインタラクティブでない時間の増加を意味しますが、この状態でもページのレンダリング自体がブロックされるわけではありません。多くの拡張機能はページのレンダリングにほぼ影響を及ぼさないそうですが、「example.com」にアクセスした際のレンダリング遅延を示した以下のグラフを見ると、セキュリティプラグインの「Avira Browser Safety」や「Avira Safe Shopping」をインストールした場合、レンダリング遅延が1000ミリ秒以上になることがわかります。
・バックグラウンドのCPU時間
拡張機能が行う全ての処理がユーザーに表示されるウェブページ上だけで行われるわけではなく、ほとんどのChrome拡張機能はページを開いた際にバックグラウンドでも処理を行っています。DebugBearが「example.com」を開いて調査したバックグラウンドでのCPU時間を示したグラフがこれ。「Avira Browser Safety」は突出してCPU時間が多く、なんと3秒近くもの時間を費やしていることがわかります。「Avira Browser Safety」はウェブページを開いた際、拡張機能内に含まれている「ウェブページの許可リスト」に開いたウェブページが存在するかどうかを照合するとのことで、リストにない「example.com」などのページを開いた場合は照合に時間がかかってしまうそうです。
・ブラウザのメモリ消費
拡張機能がウェブページを開いた際のメモリ消費に与える影響を示したグラフがこれ。やはり「Avira Browser Safety」のメモリ消費量は多く、拡張機能がない場合と比較して218MBも多く消費していることがわかります。「Adblock Plus」や「AdBlock」などの広告ブロッカーも、メモリ消費量の増加が激しい拡張機能といえます。
◆広告ブロッカーがブラウザのパフォーマンスに与える影響
DebugBearはダウンロード数が特に多い拡張機能だけでなく、「広告ブロッカー」だけに焦点を当てた分析も行っています。調査では20の広告ブロッカーについて、アメリカのTV局であるWCPO-TVが配信するニュース記事を開いた際の影響を測定したとのこと。
・ウェブページを表示する際のCPU時間
EXPOのニュース記事を開いた時のCPU時間は、拡張機能なしの場合だと約31秒ほど。これはさまざまな広告を表示するための処理に時間がかかるためであり、広告ブロッカーをインストールすると最大でもCPU時間が10秒ほどに減少します。特に、ユーザープライバシーの保護に注力した検索エンジン・DuckDuckGoが提供する「DuckDuckGo Privacy Essentials」を使った場合、CPU時間は1.6秒に縮まるとのことです。
ほとんどの広告ブロッカーは、ウェブページが開始する特定のネットワークリクエストをブロックすることによって機能します。WCPOのニュース記事を開いた際のネットワークリクエストを比較した以下のグラフを見ると、「DuckDuckGo Privacy Essentials」はネットワークリクエストの数を95%削減し、ダウンロードする通信量を80%減少させることがわかります。
・バックグラウンドのCPU時間
広告ブロッカーはブロックするべきネットワークリクエストを決定するため、バックグラウンドで処理を行う必要があります。そのため、広告ブロッカーはウェブページのCPU時間を減少させる一方で、バックグラウンドにおけるCPU時間を増加させるとのこと。以下のグラフでCPU時間の増加が著しい「Advertising Terminator」や「Ads Blocker RP」などの拡張機能は、「ブロックするネットワークリクエストのリスト」を照会するタイプだそうです。一方、「DuckDuckGo Privacy Essentials」のようにJavaScriptのオブジェクトに基づいて操作を実行する拡張機能は、CPU時間の増加が少ないとDebugBearは解説しています。
・ブラウザのメモリ消費
WCPOのページを開いた場合のメモリ消費を示した以下のグラフを見ると、広告ブロッカーがない場合は平均して900MB近くのメモリを消費しますが、広告ブロッカーをインストールすると消費量が減少することがわかります。広告ブロッカーもバックグラウンドでメモリを消費しますが、それでも広告をブロックすることによるメモリ消費の減少が上回るとのことです。
・関連記事
ウェブページの表示速度を改善するために気をつけなくてはいけないこと - GIGAZINE
GoogleはWordPressサイトのウェブページ表示速度の向上に本腰を上げて取り組む - GIGAZINE
ウェブサイトのページ表示速度を高速化するGoogle Chrome用拡張機能「Fastr」を使ってみた - GIGAZINE
Webページの読み込み速度やアクセシビリティを自動でチェックしてくれるChrome拡張「Lighthouse」 - GIGAZINE
Google Chrome 88正式版リリース、拡張機能の新たな仕様「マニフェストv3」がついに到来 - GIGAZINE
・関連コンテンツ