連載
» 2007年05月01日 08時00分 公開

Firefox Hacks:最速Firefoxをビルドしよう【後編】 (3/4)

[ITmedia]

最速Firefoxを作れ!

 Firefoxをビルドする際、完成したバイナリのパフォーマンスに影響する要素としては、Firefox自体のビルドオプションとコンパイラやコンパイラに与えるコンパイルオプションの2つがある。これらの組み合わせを変えて、最速のFirefoxを作ってみよう。

ビルドオプションによる最適化

 前述のとおり、Firefoxには多くのビルドオプションが存在している。その中でも、特にパフォーマンスに影響すると思われるのが次のオプションだ。

  • 「--enable-debug」オプション

 このオプションを指定すると、ソース内に記述されているデバッグコードが有効になるためバイナリサイズが大きくなるほか、実行する処理が増えるため処理速度が低下する。

  • 「--disable-optimize」「--enable-optimize」オプション

 これらのオプションではコンパイラによる最適化の有無や、細かいオプション設定が行える。最適化を行うことで不要な処理を減らせるほか、特定のCPU向けに最適化されたバイナリを出力できる。

  • 「--disable-shared」「--enable-static」

 これらのオプションを指定することで、Firefoxの各機能を動的ライブラリに分割せず、静的にFirefox本体にリンクできる。Firefox本体のバイナリサイズは大きくなるものの、動的ライブラリの呼び出しによるオーバーヘッドがなくなるため全体的なパフォーマンスは向上する。


 以上をまとめると、最速のFirefoxを作るためには「--enable-optimize」「--disable-shared」「--enable-static」を指定し、「--enable-debug」を指定しないのが最適な組み合わせだと言えよう。なお、Firefoxのアドレスバーに「about:buildconfig」と入力することで、そのバイナリがどのようなビルドオプションでビルドされたかを確認できる。

コンパイラ/コンパイルオプションによる最適化

 Firefoxをビルドするに当たって、コンパイラによるパフォーマンスの変化も見逃せない。なぜなら、最近のほとんどのコンパイラには最適化機能が搭載されており、ソースコード内で冗長な部分の簡略化や、CPUが搭載している演算ユニットを効率的に使用するような命令の出力を行えるからだ。例えば、GCC 4.0では表2、表3のようなコンパイラオプションによって最適化レベルや使用する命令セット*を指定できる。また、コンパイラオプションの指定で使用できるCPU種別および演算ユニットは表4、表5のとおりだ。

表2 表2 最適化レベルを指定するコンパイラオプション
表3 表3 対象とするCPUを指定するコンパイラオプション(抜粋)
表4 表4 指定できるCPU(抜粋)
表5 表5 指定できる浮動小数点演算ユニット

 例えば、ハイパースレッディング対応Pentium 4向けに最適化を行うには、以下のようなコンパイラオプションを使用すれば良い。

-O3 -fforce-addr -march=nocona -mfpmath=sse -msse3


 この例では「-O3」オプションを指定することでほぼすべての最適化を有効とし、さらにそれだけでは有効とならない「-fforce-addr」(演算を行う前に演算対象のメモリアドレスをレジスタ*にコピーする)オプションも有効にしている。

 また、Athlon 64向けに最適化を行うには次のようなコンパイラオプションを使用する。

-O3 -fforce-addr -march=athlon64 -mfpmath=sse -msse2


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

命令セット

CPUが備える機能群。最近のCPUではMMXやSSEなどと呼ばれる、マルチメディア関係の処理で多用される多バイトの浮動小数点演算などを高速に行う命令セットを備えている。

レジスタ

CPUが演算に使用する専用メモリ。容量は小さいが高速にアクセスできる。


関連キーワード

Firefox | Firefox拡張機能 | Firefox Hacks


Copyright © ITmedia, Inc. All Rights Reserved.

注目のテーマ