PHPのコンパイルオプションに --disable-allをつけて、不要なモジュールをインストールしないときのベンチマーク
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はアドバンテージがある。