最速Firefoxをビルドしよう【後編】Firefox Hacks(4/4 ページ)

» 2007年05月01日 08時00分 公開
[ITmedia]
前のページへ 1|2|3|4       

最適化の効果は?

 ビルドオプションやコンパイルオプションの違いによって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);
リスト2 テストに使用したエクステンションのソースコード(抜粋)

 表示させる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>

リスト3 最小限の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」の引数として指定している。

表6 表6 使用したビルド設定

テスト環境

 テストにはPentium 4/3GHz、メモリ512Mバイトというスペックのマシンを使用し、OS環境としてFedoraを使用して計測を行った。

テスト結果

 図1が「最小限のHTML文章」、図2が「テキスト主体のHTML文章」、図3が「画像主体のHTML文章」をそれぞれ表示させた場合のテスト結果である。これらのグラフから、次のようなことが分かる。

  • コンパイラによる最適化はパフォーマンスの向上に大きく寄与している
  • CPUに特化したオプションを指定することで、より速いバイナリを生成できる
  • GCC 3.3よりもGCC 4.0でビルドする方が高いパフォーマンスを得られる
  • スタティックビルドを行うことで、若干ではあるもののパフォーマンスを向上できる
図1 図1 「最小限のHTML文章」テスト結果
図2 図2 「テキスト主体のHTML文章」テスト結果
図3 図3 「画像主体のHTML文章」テスト結果

試行錯誤して自分だけのFirefoxを作ろう

 以上のように、コンパイルオプションやコンパイラによって、作成されたFirefoxのパフォーマンスは変化する。今回はパフォーマンスに大きく影響することが予想できるパラメータのみでテストを行ったが、このほかにもFirefoxのビルドオプションの組み合わせは無数にある。試行錯誤して自分だけのFirefoxを作ってみてはいかがだろうか。

このページで出てきた専門用語

Firefoxを終了させるエクステンション

こちらからダウンロード可能。

loadイベント

HTMLのレンダリングが完了した際に発生するイベント。

青空文庫

著作権がすでに消滅している小説などをテキスト/HTMLファイル化して公開するプロジェクト。


関連キーワード

Firefox | Firefox拡張機能 | Firefox Hacks


前のページへ 1|2|3|4       

Copyright © ITmedia, Inc. All Rights Reserved.

注目のテーマ