HPC/並列プログラミングポータルでは、HPC(High Performance Computing)プログラミングや並列プログラミングに関する情報を集積・発信しています。

新着トピックス

インテル コンパイラーでビルドする高速Firefox

 近年、そのパフォーマンス競争が盛んに行われている分野として、Webブラウザが挙げられる。たとえばSafari 4のベータ版は自らを「世界最高速」とうたうなど、それぞれのWebブラウザが自身の高速性をアピールしているが、それではWebブラウザのコンパイルにインテル コンパイラーを利用することでパフォーマンスを向上できないだろうか?

 そこでFirefoxの最新版であるFirefox 3.1 ベータ2について、Windows環境でインテル コンパイラーを使用してコンパイルし、そのパフォーマンスを調査してみた。

Windows環境でのFirefoxのコンパイル方法

 Firefoxのコンパイル方法については、Mozilla Developer CenterのBuild Documentationにまとめられているが、簡単にまとめると下記のようになる。

1. MozillaBuildをダウンロードしてインストールする

 FirefoxやThunderbirdといったMozilla製品をWindows環境でコンパイルするのに必要なツール一式をまとめたものが、MozillaBuildである。FTPサイトからMozillaBuildSetup-1.3.exeをダウンロードし、インストールする。なお、インストール先はデフォルトの「C:\mozilla-build」が推奨されている。

2. Firefoxのソースコード一式をダウンロードして展開する

 Firefox 3.1 ベータ2のソースコード一式はFTPサイトから入手できる。このファイルをダウンロードし、任意のフォルダに展開する。なお、展開先フォルダはマルチバイト文字および空白が含まれていないことが望ましい。今回は、C:\work以下に展開した。

3. ビルド環境設定ファイルを用意する

 Firefoxのビルド設定は、「mozilla-central」フォルダ中の「.mozconfig」というテキストファイルを使用して行う。このファイルに設定オプションを記述していくのだが、通常は次のように記述すればよい。この場合、mozilla-centralフォルダ以下の「ff-opt」フォルダ以下に作成されたバイナリが格納される。

. $topsrcdir/browser/config/mozconfig

mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/ff-opt
ac_add_options --disable-tests

4. MozillaBuildに含まれる環境設定スクリプトを実行してシェルを起動する

 MozillaBuildに含まれる環境設定スクリプトを実行し、ビルド環境を起動する。インテル コンパイラー用のスクリプトは用意されていないので、インテル コンパイラー11.0でビルドする場合はこちらで用意したstart-icc11.batをダウンロードしてMozillaBuildのインストールフォルダにコピーし、これを実行すればよい。また、Visual C++ 2008を使用する場合は「start-msvc9.bat」を実行すればよい。そのほかの環境の場合は実行するスクリプトが異なるので、表1を参考に環境に応じたスクリプトを実行する。

表1 実行する環境設定スクリプト
コンパイラ環境実行するスクリプト
Visual C++ 6.0start-msvc6.bat
Visual C++ .NET 2003start-msvc7.1.bat
Visual C++ 2005start-msvc8.bat
Visual C++ 2008start-msvc9.bat

5. インテル コンパイラーでコンパイルするためにコードを修正する

 WindowsでのFirefoxのコンパイルはVisual C++の使用を想定しているため、インテル コンパイラーでコンパイルするためには一部の設定ファイルやソースコードを修正する必要がある。修正点はパッチファイル(firefox-3.1b2-icc-diff.patch)にまとめてあるので、こちらをFirefoxのソースコードを展開したフォルダ中の「mozilla-central」フォルダにダウンロードし、先ほど起動したシェルで次のように実行する。

$ cd <Firefoxのソースコードを展開したフォルダ>/mozilla-central
$ patch -p1  firefox-3.1b2-icc-diff.patch

6. コンパイルの実行

 最後に、シェルで次のように実行するとコンパイルが開始される。

$ make -f client.mk build

 コンパイルが完了すると、ff-optフォルダ内の「dist\bin」フォルダに実行ファイルやライブラリ一式が作成される。