Cakephp1.2finalとrc3のパフォーマンス比較 on MacOS X 続編

CakePHPのパフォーマンステストに関する続編です。Macに関することなのであまりCakeとは関係ない内容が多いです。Cakeと関係あるのはAPCをONにしてパフォーマンステストした結果だけ。


前回の記事
http://d.hatena.ne.jp/cakephper/20090101/1230795414
で、MacPHPで下記のエラーにより、APCが有効にならないと書いたが、解決しました。

PHP Startup: Unable to load dynamic library apc.so (null) in Unknown on line 0

色々とアドバイスをくれたMASA-Pさんありがとうございました。

結論から言うと、コンパイルしたAPC.soファイルはx86の32bit用で、自分のMacbookの64bit環境に適していない状況でした。
libjpegを自前でコンパイルする際に参考にしたサイトで、configureの前にx86_64用の記述を書いていたので、それにピンと来てAPCコンパイルでも試してみたらいけました。

とりあえず、下記のようにapcのconfigureを実行しました。

MACOSX_DEPLOYMENT_TARGET=10.5 CFLAGS="-arch ppc -arch ppc64 -arch i386 -arch x86_64 -g -Os -pipe -no-cpp-precomp" CCFLAGS="-arch ppc -arch ppc64 -arch i386 -arch x86_64 -g -Os -pipe" CXXFLAGS="-arch ppc -arch ppc64 -arch i386 -arch x86_64 -g -Os -pipe" LDFLAGS="-arch ppc -arch ppc64 -arch i386 -arch x86_64 -bind_at_load" ./configure --enable-apc

重要なのは-arc x86_64の箇所です。
これでmakeしたsoファイルをfileコマンドで見ると、ちゃんとx86_64対応という表示になりました。

$ file /usr/lib/php/extensions/no-debug-non-zts-20060613/apc.so 

/usr/lib/php/extensions/no-debug-non-zts-20060613/apc.so: Mach-O universal binary with 4 architectures
/usr/lib/php/extensions/no-debug-non-zts-20060613/apc.so (for architecture ppc7400):    Mach-O bundle ppc
/usr/lib/php/extensions/no-debug-non-zts-20060613/apc.so (for architecture ppc64):      Mach-O 64-bit bundle ppc64
/usr/lib/php/extensions/no-debug-non-zts-20060613/apc.so (for architecture i386):       Mach-O bundle i386
/usr/lib/php/extensions/no-debug-non-zts-20060613/apc.so (for architecture x86_64):     Mach-O 64-bit bundle x86_64

ということで、再度Macの環境でAPCを有効にして計測してみました。

まずは、APCを有効にしていない場合は、前回の記事と同じように、RC3, final共に下記のような結果となりました。

CakePHP1.2 RC3
 22req/sec

CakePHP1.2 final
 22req/sec


そしてAPCを有効にした場合は、下記のようになりました。結果としてrc3とfinalではパフォーマンスの差はないようです。

CakePHP1.2 RC3
 70req/sec

CakePHP1.2 final
 70req/sec


APCは、APCのモジュールをダウンロードして、tarを展開したディレクトリに遷移し、下記のようにインストールしました

phpize

MACOSX_DEPLOYMENT_TARGET=10.5 CFLAGS="-arch ppc -arch ppc64 -arch i386 -arch x86_64 -g -Os -pipe -no-cpp-precomp" CCFLAGS="-arch ppc -arch ppc64 -arch i386 -arch x86_64 -g -Os -pipe" CXXFLAGS="-arch ppc -arch ppc64 -arch i386 -arch x86_64 -g -Os -pipe" LDFLAGS="-arch ppc -arch ppc64 -arch i386 -arch x86_64 -bind_at_load" ./configure --enable-apc

make

make test

make install


最後に、php.iniで下記のように追記し、Apacheを再起動すればOKです

extension_dir = "/usr/lib/php/extensions/no-debug-non-zts-20060613/"
extension=apc.so
apc.enabled=1
apc.shm_segments=1
apc.shm_size=32
apc.ttl=7200
apc.user_ttl=7200
apc.include_once_override=1
apc.enable_cli=1

extension_dirは、apc.soをmake installしたディレクトリを指定下さい。