PHPのコンパイルオプションに –disable-allをつけて、不要なモジュールをインストールしないときのベンチマーク

このエントリーをはてなブックマークに追加
はてなブックマーク - PHPのコンパイルオプションに –disable-allをつけて、不要なモジュールをインストールしないときのベンチマーク
LINEで送る
Pocket

PHP5.2.3の configureオプションである–disable-allを指定した場合にどの程度パフォーマンスに影響するかを実験する。
–disable-allとは、PHPをインストールする際にデフォルトでインストールされる機能をインストールしないようにするオプション。デフォルトでは不要なも機能まで入ってしまうため、無駄が発生する場合がある。例えば、XML,JSON、filter、PDOなどである。

PHP実験環境

  • 共通環境
    • ゲスト:CentOS release 4.4 (Final) (on Vmware server 1.0.2)
    • ホスト:Windows XP Professional
    • CPU: Intel Core2 Duo 6600 2.4G
    • Apache:2.2.4
      • ./configure –prefix=/usr/local/apache2 –enable-ssl –enable-rewrite –enable-so
  • 環境1
    • ./configure \
      –enable-mbstring \
      –enable-soap \
      –enable-zend-multibyte \
      –with-apxs2=/usr/local/apache2/bin/apxs \
      –with-mysql=/usr/local/mysql \
      –with-pdo-mysql=/usr/local/mysql \
      –with-curl \
      –with-curlwrappers \
      –with-gd \
      –with-jpeg-dir=/usr/lib \
      –with-png-dir=/usr/lib \
      –with-zlib-dir=/usr/lib \
      –with-mcrypt
  • 環境2
    • ./configure \
      –enable-mbstring \
      –enable-soap \
      –enable-zend-multibyte \
      –with-apxs2=/usr/local/apache2/bin/apxs \
      –with-mysql=/usr/local/mysql \
      –with-pdo-mysql=/usr/local/mysql \
      –with-curl \
      –with-curlwrappers \
      –with-gd \
      –with-jpeg-dir=/usr/lib \
      –with-png-dir=/usr/lib \
      –with-zlib-dir=/usr/lib \
      –with-mcrypt \
      –enable-libxml \
      –disable-all
  • 環境1には入っていて、環境2には入っていないモジュール
    • ctype
    • dom
    • filter
    • hash
    • iconv
    • json
    • pcre
    • PDO
    • pdo_mysql
    • pdo_sqlite
    • posix
    • session
    • SimpleXML
    • SPL
    • SQLite
    • tokenizer
    • xml
    • xmlreader
    • xmlwriter

結果

ファイルサイズ
環境1 環境2 環境2/環境1
(100%以下なら小さい)
libphp5.soのファイルサイズ(B) 17268191 11998616 69%
/usr/local/bin/phpのファイルサイズ(B) 16307443 11306924 69%
apache起動直後のメインプロセスVSZ (kB) 19572 17332 89%
apache起動直後のサブプロセスVSZ (kB) 19704 17468 89%
コマンドラインベンチマーク

コマンドラインにてfunction callの速度を計測。PHPのソースコードに付属している ./Zend/bench.php を利用。 5回実行した結果の平均を記載。

% php ./Zend/bench.php|awk ‘{print $2}’

環境1 環境2 環境2/環境1
(100%以下なら環境1が高速)
Webベンチマーク

Webでアクセスした際のパフォーマンス測定。コマンドラインと同じスクリプトを利用

環境1 環境2 環境2/環境1
(100%以下なら環境1が高速)

結論

Webで利用した場合は、環境1と環境2において差異は無さそう。

ファイル容量がモジュールを削減した分、20%程度減っているため、プロセス起動が頻繁に発生する場合に環境2はアドバンテージがある。

環境1
php env1

環境2
php env2

このエントリーをはてなブックマークに追加
はてなブックマーク - PHPのコンパイルオプションに –disable-allをつけて、不要なモジュールをインストールしないときのベンチマーク
LINEで送る
Pocket

matsubokkuri

Please feel free to contact me via e-mail, twitter and facebook!

あわせて読みたい

コメントを残す