Windowsのみに最適化することで高速化しているFirefoxクローン「Pale Moon」

せめてどういう高速化を施しているのかくらい説明しろよGIGAZINE

Pale Moon - Technical Details」から特徴的なところを抽出して意訳してみる。《》は訳者コメント。

  • 最近のCPU向けに最適化(SSE2命令を使うように最適化、SSE2をサポートしない古いCPUでは動かない)《テテ氏はSSE版も提供》
  • オリジナルのFirefox《以下、本家》のソースコードのみを使用
  • 次の機能を無効にすることで高速化・軽量化
    • ActiveXのサポート
    • ユーザー補助機能
    • 保護者による制限《Vista以降の機能》
    • クラッシュレポート
  • Cランタイムライブラリの最適化
  • ライセンス規約によりMozillaが提供するバイナリ以外はFirefoxを名乗ってはいけないため、最適化ビルド版FirefoxではなくPale Moonと名付けた
    • というわけで《Iceweasel同様名目上は別ブラウザだが、中身は》Firefoxそのもの
  • 動作確認済み《最適化によるバグのチェック?》
  • 開発環境はXP+MinGW+Win7SDK
  • コンパイラVC++2005
    • 本家はVC++2005または2008《テテ氏はVC++2005、otachan氏はVC++2010》
    • ちなみにFx3.5では本家はVC++2005または2008だったがPale Moonは2003
      • 本家とは異なるコードが生成され、異なるライブラリを使用している状態だった
        • Microsoftが2003→2005でコンパイラの仕様変更を行った(プロセッサ別の最適化を廃止した)せい
        • その代わり、最適化できる範囲が広い
      • Fx3.6はVC++2003以前でのコンパイルがサポートされずVC++2003でコンパイルできなくなったため、VC++2005にせざるを得なくなった
  • プログラム全体の最適化、SSE2、可能な関数すべてをインライン展開、実行速度の最大化、組み込み関数を使用する、フレームポインターなし、スタックチェック呼び出しの制御、セキュリティーチェックなし
  • PGO(ガイド付き最適化)《一度実行したときにどのコードがどれだけ実行されてどれだけ時間がかかったかというプロファイル情報に基づく最適化》

後で知ったが、Firefoxではabout:buildconfigでコンパイル時のオプションを確認できる。