近年、そのパフォーマンス競争が盛んに行われている分野として、Webブラウザが挙げられる。たとえばSafari 4のベータ版は自らを「世界最高速」とうたうなど、それぞれのWebブラウザが自身の高速性をアピールしているが、それではWebブラウザのコンパイルにインテル コンパイラーを利用することでパフォーマンスを向上できないだろうか?
そこでFirefoxの最新版であるFirefox 3.1 ベータ2について、Windows環境でインテル コンパイラーを使用してコンパイルし、そのパフォーマンスを調査してみた。
Firefoxのコンパイル方法については、Mozilla Developer CenterのBuild Documentationにまとめられているが、簡単にまとめると下記のようになる。
FirefoxやThunderbirdといったMozilla製品をWindows環境でコンパイルするのに必要なツール一式をまとめたものが、MozillaBuildである。FTPサイトからMozillaBuildSetup-1.3.exeをダウンロードし、インストールする。なお、インストール先はデフォルトの「C:\mozilla-build」が推奨されている。
Firefox 3.1 ベータ2のソースコード一式はFTPサイトから入手できる。このファイルをダウンロードし、任意のフォルダに展開する。なお、展開先フォルダはマルチバイト文字および空白が含まれていないことが望ましい。今回は、C:\work以下に展開した。
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
を参考に環境に応じたスクリプトを実行する。
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
最後に、シェルで次のように実行するとコンパイルが開始される。
$ make -f client.mk build
コンパイルが完了すると、ff-optフォルダ内の「dist\bin」フォルダに実行ファイルやライブラリ一式が作成される。