それでは、インテル コンパイラーでコンパイルした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の両方ともにデフォルト設定で行った。
| 構成要素 | スペック |
|---|---|
| CPU | Core 2 Duo E6550(2.33GHz) |
| OS | Debian GNU/Linux 5.0 |
| メモリ | 2GB |
テスト結果は図1のようになり、インテル コンパイラーでコンパイルしたFirefoxのほうが、Visual C++でコンパイルしたものよりも1割以上高速、という結果となった。
続いて、最近話題になっているJavaScriptエンジンのベンチマークツール「SunSpider JavaScript Benchmark」(以下、SunSpider)を使用してパフォーマンスを比較してみた。SunSpiderはJavaScriptエンジンの性能を調べるベンチマークテストで、3D表示や変数へのアクセス、ビット操作など、JavaScriptの実行に関わるパフォーマンスを測定するテストで構成されている。実行結果はそれぞれのテストを実行するのにかかった時間で表示され、この数値が小さいほどパフォーマンスが高い。
さて、表3がSunSpiderのテスト結果である。SunSpiderは比較的結果にばらつきが出やすいため比較が難しいが、インテル コンパイラー版バイナリは「math」では大幅に高いパフォーマンスを示したほか、「regexp」や「string」などでも良好な結果を示している。
| テスト項目 | インテル コンパイラー 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でも有効であることが確認できた。今回はデフォルト設定でのコンパイルを行ったが、設定次第ではより高いパフォーマンスが期待できる可能性もある。興味を持たれた読者の方はぜひチューニングに挑戦してみてほしい。