Develop and Download Open Source Software

OpenSource Downloads

7-Zip  (3,583)  
CrystalDiskInfo  (1,811)  
Tera Term  (1,787)  
HandBrake Japanese Language Version  (1,743)  
CrystalDiskMark  (980)  
FFFTP  (765)  
ffdshow  (719)  
mixfont-mplus-ipa  (615)  
MergeDoc  (571)  
10  TortoiseSVN  (555)  
11  Amateras  (437)  
12  BathyScaphe  (396)  
13  FreeMind  (372)  
14  Cabos  (327)  
15  ギコナビ  (316)  
More >>

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

2009年03月09日 00:00 松島浩道 1 2

HTMLのレンダリングパフォーマンスを比較する

 それでは、インテル コンパイラーでコンパイルしたFirefoxのパフォーマンスを調べてみよう。Webブラウザのパフォーマンスを測る方法には色々あるが、まずはHTMLの解析とレンダリング速度を測る「Test rendering time」テストを試してみた。このテストは、ランダムな数値を含む5000行の表を含むHTMLをレンダリングするのに必要な時間を測定するものだ。今回はネットワークなどの条件による結果の変動を防ぐため、このHTMLファイルをローカルHDDに保存し、さらにHTMLファイルの末尾に記述されている下記の無関係なJavaScriptコードを削除したうえで実行させた。

<script type="text/javascript">
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
</script>
<script type="text/javascript">
var pageTracker = _gat._getTracker("UA-365950-1");
pageTracker._trackPageview();
</script>

 なお、テストを行う際は一度Firefoxでこのファイルを開いた後、F5キーでリロードを5回行ってその平均を結果とした。また、テストで使用したPCのスペックは表2のとおりで、Firefoxのコンパイルはインテル コンパイラーおよびVisual C++ 2008の両方ともにデフォルト設定で行った。

表2 テストで使用したPCのスペック
構成要素 スペック
CPU Core 2 Duo E6550(2.33GHz)
OS Debian GNU/Linux 5.0
メモリ 2GB

 テスト結果は図1のようになり、インテル コンパイラーでコンパイルしたFirefoxのほうが、Visual C++でコンパイルしたものよりも1割以上高速、という結果となった。

図1 Test rendering timeの実行結果
図1 Test rendering timeの実行結果

Sunpiderによるベンチマーク

 続いて、最近話題になっているJavaScriptエンジンのベンチマークツール「SunSpider JavaScript Benchmark」(以下、SunSpider)を使用してパフォーマンスを比較してみた。SunSpiderはJavaScriptエンジンの性能を調べるベンチマークテストで、3D表示や変数へのアクセス、ビット操作など、JavaScriptの実行に関わるパフォーマンスを測定するテストで構成されている。実行結果はそれぞれのテストを実行するのにかかった時間で表示され、この数値が小さいほどパフォーマンスが高い。

 さて、表3がSunSpiderのテスト結果である。SunSpiderは比較的結果にばらつきが出やすいため比較が難しいが、インテル コンパイラー版バイナリは「math」では大幅に高いパフォーマンスを示したほか、「regexp」や「string」などでも良好な結果を示している。

表3 SunSpiderの実行結果
テスト項目 インテル コンパイラー 11.0 Visual C++ 2008
Total 1589.2 1641.6
3d Total 167.6 167.6
cube 54.8 52.2
morph 29.4 34
raytrace 83.4 81.4
access Total 159.4 145.2
binary-trees 45.2 41
fannkuch 70.2 59.8
nbody 29.6 29.6
nsieve 14.4 14.8
bitops Total 56.2 57
3bit-bits-in-byte 1.8 1.6
bits-in-byte 8.8 20.2
bitwise-and 18 11.2
nsieve-bits 27.6 24
controlflow recursive 41 37.6
crypto Total 59.2 60.6
aes 37.6 38
md5 14.8 15.6
sha1 6.8 7
date Total 234.4 232
format-tofte 129.2 131.2
format-xparb 105.2 100.8
math Total 43.2 65.2
cordic 22.8 37.8
partial-sums 12 18.8
spectral-norm 8.4 8.6
regexp dna 252.8 265.8
string Total 575.4 610.6
base64 25 29
fasta 76.8 87.4
tagcloud 143.4 147
unpack-code 210.2 201.8
validate-input 120 145.4
※単位はミリ秒

 以上のように、インテル コンパイラーによる高速化はFirefoxでも有効であることが確認できた。今回はデフォルト設定でのコンパイルを行ったが、設定次第ではより高いパフォーマンスが期待できる可能性もある。興味を持たれた読者の方はぜひチューニングに挑戦してみてほしい。



コラム Linux環境におけるFirefoxのコンパイル

 Linux環境でのFirefoxのコンパイル手順は、基本的にはWindows環境の場合と同一である。コンパイルにはPerlやmake、pkg-configなどの開発ツールやGTK2、libXt、libIDLなどのライブラリが必要だが、これらはaptやyumといったパッケージシステムで導入できる。そのほかコンパイルに必要なライブラリやツールなどは、Linux Build Prerequisitesにまとめられているので、こちらを参照してほしい。

 コンパイル環境が整ってしまえば、あとはFirefoxのソースコード一式をダウンロードして展開し、展開されたソースツリー中の「mozilla-central」フォルダ中に「.mozconfig」設定ファイルを作成して「make -f client.mk」を実行と、Windowsでのコンパイルと同様の手順でコンパイルが行える。

 なお、使用するコンパイラは.mozconfigファイルではなく、CCおよびCXX環境変数で指定する。たとえばインテル コンパイラーでコンパイルを行う場合、.mozconfigファイルを作成した後に次のようにコンパイルを実行すればよい。

$ cd icc_mozilla-central
$ export CC=icc
$ export CXX=icpc
$ make -f client.mk
最終更新:2009年11月19日 19:23
SourceForge.JP is a Japanese version of SourceForge.net. For developments that are not related to Japan, we recommend you to use SourceForge.net.