| トップ | Readme | 超格闘士列伝 | 随想録 | 天地無用!魎皇鬼 | リンク | フォーラム | メールフォーム |

ソフトウェア関連記事

 随想録の内ソフトウェアに関連した記事です。

最適化ビルドのスゝメ

(Firefoxの付記)

last updated: 12/01/04

 オープンソースのブラウザ、Firefoxの初の正式版となるバージョン1.0は、14カ国語版同時リリースという快挙をやってのけた11月09日以来、二日間で既に250万回以上ダウンロードされているそうです。この大人気のおかげでサイトは一時ダウン寸前になったとか。これは近頃相次いで発表されたIEの脆弱性発見の報や宣伝が上手くいった結果だと分析できます。

 しかし、特にIEから乗り換えで使ってみた人は経験したと思いますが、FirefoxはIEと比べ、一般にレンダリング以外のスピードは遅いのです。一度起動してしまえば気にするほどではありませんが、例えば『Webサイトを見たくなったらちょっと起動して、見終わったらウィンドウを閉じる』みたいな使い方をしている人にとっては、起動の遅さは耐えられないレベルかもしれません(そのためタブブラウズ機能があるのですが)。

 通信速度やレンダリング速度についてはチューニングである程度は改善できますが、この起動速度(と反応速度)についてはチューニングで解決するものではありません。しかし、幸いな事にFirefoxはオープンソースソフトウェアであるためソースを手に入れて自前でビルドすることが許されおり、また、一定の条件に従えばそれらを再配布することも可能です。そこで、有志の手によりコンパイル時にCPUへの最適化を施したビルドというのが公開されています。これが、最適化ビルドと呼ばれるものです。

 さて、この最適化とは何かと言うと、プログラムになるべくCPUの性能をフルに使うようにさせる、ということです。もう少し詳しく説明すると、現在流通しているほぼ全てのCPUは複数の拡張命令セット(例えばSSEとかSSE2とか)をサポートしており、これらを積極的に使うように設定しコンパイルを行うことで、プログラムの動作速度の向上が見込める、というものです。あまり適切ではない喩えをすると、ある職場に仕事の出来るバイトと出来ないバイトがいるとして、皆に同じ質・量の仕事をさせるのが公式ビルド、仕事の出来るバイトにはより積極的に仕事を廻し、全体の作業を速く終わらせようとするのが最適化ビルドです。因みに現実に上司にこれをやられると仕事の出来るバイト君は余計に働くことになり大抵の場合不満を募らせてやめていきますが、拡張命令セット君はとても働き者でしかも文句も言いません(笑)。

 オフィシャルで配布されているバイナリは、同OSであればどんな環境でも動くよう、あるCPUではサポートされているけれどその他ではそうではないような拡張命令(例えばSSE2)に最適化するわけにはいかず、全てのCPUでサポートされている基本命令だけで動くようになっています。つまり、Pentium 4やAthlon 64と言った最新CPUは疎か、Pentium IIIやAthlon XPといった何世代か前のCPUでサポートされている拡張命令にすら最適化されていないのです。ですから、もし使っているパソコンのCPUが少なくともSSEを搭載するタイプであれば(因みに、現在では殆どの場合当て嵌まります)、自分のCPUに合った最適化ビルドを使うことで、動作速度の向上が期待できます。

 但し、問題点もあります。一番大きいのは、最適化ビルドは公式版ではないと言うことです。最適化版作者の信頼性(そもそも配布者が誰かわからないという意味で)は公的組織であるMozilla Foundationと比べれば当然低いですし、公式版にはないバグの存在も考えられます。安心を求めるのであれば、公式版を使うべきです。また、ライセンスの関係上アートワークが変更されています。具体的に言うと、ウィンドウやタスクバーに表示されるアイコンが公式の狐のものではなく、青い地球があしらわれたアイコンになります。クレジット表示で出る絵も変更されています。これらが我慢ならなくて、且つ自分で変更が出来ないという人は使うべきではないでしょう。

 ではこの先はそれでも尚最適化ビルドを使いたいという、何を置いても速度が命という方へ。まず配布場所ですが、最適化ビルドは当然公式サイトからは落とせません。定番としてはMooxにありますが、この他にも様々なオプション・コンパイラの組み合わせの最適化ビルドが存在し、その殆どはThird Party/Unofficial Builds - MozillaZine Forumsから辿ることができます。個人的には最初は前述のMooxのものが扱いやすいかと思います。

 これらは当然の事ながら基本的には英語のリソースしか含んでおりません。しかし、Firefoxは実装の部分はXULで書かれているため、オフィシャルで配布されているものと同じソースからビルドされたものであればオフィシャルで配布されているJLP(日本語化ファイル)が適用可能です。

 もう少し詳しく言うと、Help→aboutで表示されるユーザエージェント、例えばWindows 2000環境でFirefox 1.0であれば

(Windows; U; Windows NT 5.1; rv:1.7.5) Gecko/20041109 Firefox/1.0

となっている内、太字・下線で示されている部分がオフィシャル版と同一であれば、オフィシャル用のJLPが適用可能ということになります。因みに、JLPはオフィシャル以外からもいくつか提供されています。その中にはNightly Build用もあります。

 また、MOOX: Localized & Optimized Firefox BuildsLife, Starting Anew - Jay, from taiwan, that simple.では最初から日本語ロケールが含まれているビルドも公開されています。

 最後に、どれを使ったらいいのかの大体の見分け方を紹介します。その最適化ビルドが何に最適化されているかは、分かりやすくCPUの名前で表されていることもありますが、殆どの場合は拡張命令の種類で表されます。つまり、SSE2と書いてあればSSE2を使えるCPUに最適化されており、SSEと書いてあればSSEを使えるCPUに最適化されているわけです。ですから、自分のCPUがどの拡張命令をサポートしているかが解れば、どの最適化ビルドを使えばいいかが解ります。以下が、どのCPUがどの拡張命令をサポートしているかのリストです。

SSE2

AMD Opteron
AMD Athlon FX
AMD Athlon 64
Intel Xeon
Intel Pentium M
Intel Pentium 4
Intel Celeron (1.7GHz and Up)

SSE

AMD Athlon XP
AMD Athlon MP
AMD Sempron
AMD Duron (1.0GHz - 1.8GHz)
Intel Pentium 3
Intel Celeron (533MHz - 1.4GHz

上記より古いCPU(最適化版の効果が薄い)

AMD Athlon
AMD K6-2
Intel Pentium 2
Intel Pentium Pro
Intel Pentium等

 それでは、最適化版Firefoxで快適なWebブラウズを!

注意

 最適化版には通常インストーラ版はありません。関連づけとか解らない人はオフィシャル版を使いましょう(まぁインストーラで入れた後にフォルダ全消しして最適化版と入れ替えるという手もありますが、こんなこと考えつくような人は関連づけを解っている人でしょう、多分)。
 最適化版特有の問題がある場合もあります。例えばJTw氏の1.0PR最適化版には当初Find ToolbarがEscやクローズボタンをクリックで閉じないという問題がありました。今は直したものに差し替えられていますが。
 この他、Windows版の場合、オフィシャルビルドに含まれるdllがfirefox.exeと同一フォルダに存在しない最適化版では、そのままでは一部の拡張が使えないことがあります(例:FlashGot、Javascript Actions 1.9.1、Minimize to Tray)。この場合手動で足りないdll(多くの場合msvcr71.dll)をfirefox.exeと同じフォルダか、Windowsのシステムフォルダにコピーすれば使えるようになります。

おまけ。JTw氏の最適化版Firefox紹介

  Firefoxはオープンソースソフトウェアですので、誰でも自由にソースを手に入れて自前でビルドすることが出来ます。そして、中にはそれらを公開している人もいます。所謂非公式ビルドというものです。そして、非公式ビルドの中でも、特定のCPUに対しての最適化が施されているものを特に最適化ビルドと呼びます。

 そんな最適化ビルドの中で、私が愛用しているのはJTw氏のビルドです。SSEが使用出来るCPU用のadvA、SSE2が使用出来るCPU用のadvB、それらの使用出来ない以外のCPU用のbasicAの三種のwindows向けの最適化版Firefoxが配布されています。

 まずは利点を。公式なFirefoxでは、1.0PR→1.0RC1で250のバグが修正され、1.0正式版では更に軽微なバグ修正と若干のパフォーマンス改善が施されましたが、JTw氏の最適化版では更にBumpy Road to Firefox 1.0に見られるパッチが適用されています。これらの中には挙動やレンダリングに関わるものの他、zlibやlibpngアップグレードなど、速度に関わるパッチもあり、CPUへの最適化と相まって公式版と比べ大幅な速度面での優位性が見て取れます。

 次に、彼の最適化版Firefoxのビルドには、最新のコンパイラ(βですが)が使用されています。つまり、使用されているコンパイラ、Visual Studio 8 Beta1が旧版と比べて謳っている利点が、そのまま彼のビルドにも当て嵌まります。速度面での優位性も勿論謳われています。

 但し、問題点もあります。一番大きいのは、最適化ビルドは公式版ではないと言うことです。最適化版作者の信頼性(そもそも配布者が誰かわからないという意味で)は公的組織であるMozilla Foundationと比べれば当然低いですし、公式版にはないバグの存在も考えられます。安心を求めるのであれば、公式版を使うべきです。

 また、ライセンスの関係上アートワークが変更されています。具体的に言うと、ウィンドウやタスクバーに表示されるアイコンが公式の狐のものではなく、青い地球があしらわれたアイコンになります。また、クレジット表示で出る絵も変更されています。これらが我慢ならなくて、且つ自分で変更が出来ないという人は使うべきではないでしょう。

 さて、最後にそれでも尚JTw氏の最適化版を使用したいという方へ注意です。互換性がない場合がありますので、プロファイルは新しく作り直した方が無難です(これは何もJTw氏のビルドに限った話ではありませんが)。また、msvcr71.dllを利用している拡張(例えばFlashGot、Minimize to Tray等)を使うには、msvcr71.dllをfirefox.exeと同一のフォルダか、Windowsのシステムフォルダに置く必要があります(私はシステムフォルダに入れてます)。

 それでは、快適なブラウジングを!

 配布元 → Life, Starting Anew - Jay, from taiwan, that simple.

関連サイト

Moox (Windows用の各CPU最適化版があります)
http://www.moox.ws/tech/mozilla/

Life, Starting Anew - Jay, from taiwan, that simple. (Windows用の各CPU最適化版があります)
http://pryan.org/firefox/jayfromtaiwan/blog/

その他最適化版各種
http://forums.mozillazine.org/viewforum.php?f=42

| トップ | Readme | 超格闘士列伝 | 随想録 | 天地無用!魎皇鬼 | リンク | フォーラム | メールフォーム |