ビルドオプションやコンパイルオプションの違いによってFirefoxのパフォーマンスはどの程度変わるのだろうか? そこで、今回は実際にビルドオプションやコンパイルオプションを変えてFirefoxをビルドし、それぞれの起動速度やレンダリング速度を比較した。
Firefoxの起動速度やレンダリング速度をできるだけ正確に比較するため、HDD中のHTML文章を引数に与えてFirefoxを起動し、レンダリングが完了して終了するまでの時間をtimeコマンドを使用して測定した。また、計測を容易にするため、レンダリングの完了後即時にFirefoxを終了させるエクステンション*を作成し、Firefoxにあらかじめ組み込んでおく。このエクステンションはリスト2のように、loadイベント*をカウントし、Firefoxの起動後、レンダリングが完了された時点で発行される3回目のloadイベントを受け取った時点でウインドウを閉じる、という簡単なものだ。
var wclose_1 = 0;
function loaded() {
if( wclose_1 >= 2 ) {
window.close();
return false;
}
wclose_1 = wclose_1 + 1;
return false;
}
window.addEventListener("load", loaded, true);
表示させるHTML文章としては、最小限、テキスト主体、画像主体の3種類を用意した。それぞれについて簡単に説明しておくと、「最小限」はリスト3のような最小限のHTMLタグのみが含まれたHTML文章(158バイト)、「テキスト主体」が青空文庫※で配布されている「吾輩は猫である」全文(約1.2Mバイト)、「画像主体」が「UNIX USER」と「オープンソースマガジン」の表紙画像、156ファイルを6×26の表として並べたもの(約3.6Mバイト)となっている。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE>Firefox Benchmark</TITLE>
</HEAD>
<BODY>
This is Firefox.
</BODY>
</HTML>
なお、連続して複数回Firefoxを起動する場合、ディスクキャッシュの影響によって2回目以降の起動時間やファイルの読み込み時間が大きく短縮される。そのため、テストではそれぞれのHTML文章に対して11回ずつ計測を行い、2回目から11回目まで、計10回取得したデータの平均を最終的な計測結果とした。
今回のテストでは、コンパイラとしてGCC 3.3とGCC 4.0の2種類を使用した。また、指定したビルド設定は表6のとおりだ。なお、表6中で最適化が「×」の設定では、「--disable-optimize」オプションを使用して明示的に最適化を無効にしている。また、Pentium 4向け最適化では「-O3 -march=nocona -mfpmath=sse -msse3 -fforce-addr」を「--enable-optimize」の引数として指定している。
テストにはPentium 4/3GHz、メモリ512Mバイトというスペックのマシンを使用し、OS環境としてFedoraを使用して計測を行った。
図1が「最小限のHTML文章」、図2が「テキスト主体のHTML文章」、図3が「画像主体のHTML文章」をそれぞれ表示させた場合のテスト結果である。これらのグラフから、次のようなことが分かる。
以上のように、コンパイルオプションやコンパイラによって、作成されたFirefoxのパフォーマンスは変化する。今回はパフォーマンスに大きく影響することが予想できるパラメータのみでテストを行ったが、このほかにもFirefoxのビルドオプションの組み合わせは無数にある。試行錯誤して自分だけのFirefoxを作ってみてはいかがだろうか。
こちらからダウンロード可能。
HTMLのレンダリングが完了した際に発生するイベント。
著作権がすでに消滅している小説などをテキスト/HTMLファイル化して公開するプロジェクト。
Copyright © ITmedia, Inc. All Rights Reserved.