CakePHP2 betaとSymfony2.0をパフォーマンス比較しました
昨日、Symfony2.0がリリースされたので、早速パフォーマンス計測しました。
Symfony2.0もCake2betaと同じデータ量のtableにアクセスして、同じ1レコードを取得して表示する画面を計測しました。
計測は下記のように同じツール、同じオプションを使ってます。
siege -c 10 -b -t 3S
詳細なテスト環境は、下記ブログに書いてあります。データ量なども一緒。
http://cake.eizoku.com/blog/2011/07/27/performance-check-of-cakephp1-3-11-and-cakephp2beta/
計測は何回か実行した中央値ぐらいの結果をピックアップしました。ですので両方ともキャッシュファイルは生成された状態の計測となっています。
[追記]
後藤さんからSymfony2のpullリクエストもらったので、再度計測しました。前田さんからSilexのコードをもらえたので計測追加しました。
計測結果2
Cake2Beta (キャッシュファイルはAPC保存(デフォルト設定)) (http://localhosts/php/cake/blog2/posts/simpleview/10000) 108 trans/sec Cake2Beta (キャッシュファイルはapp/tmp保存) 98 trans/sec Cake1.3.11 (http://localhosts/php/cake/blog/posts/simpleview/10000) 80 trans/sec Symfony2.0 (http://localhost/php/symfony/Symfony/web/app.php/blog/10000) 80 trans/sec Silex (http://localhost/php/symfony/silex-sample-application/web/index.php/blog/10000) 82 trans/sec Silex (TwigのCacheをON) 132 trans/sec Silex (TwigのCacheをON, Twig継承有り) 132 trans/sec
今回はCakePHP1.3.11も計測。後藤さんのパッチを当てたらSymfony2のパフォーマンスが大幅アップしました。
Cake2Betaは標準でtmp以下にファイルキャッシュせず、APCにキャッシュするので、それをはずしてCake1.3と同じようにtmp以下にファイルキャッシュするパターンも計測しました。キャッシュ内容はモデルのスキーマやファイルのパス情報です。
SilexはTwigのキャッシュをONとOFFで計測しました。ONにすると劇的に速度アップしますね
[追記終わり]
CakePHP2betaの方がSymfony2より2倍速い!!!!
今回計測に使ったソースコード
Cake2beta
https://github.com/ichikaway/CakePHP-PerformanceCheckSample/tree/master/cake2/app
Symfony2.0
https://github.com/ichikaway/Symfony2-PerformanceCheckSample
Silex
https://github.com/brtriver/silex-sample-application
Symfony2.0をほとんど使ったことがないので、Blogチュートリアルを見てそのまま作ってます。本番環境モードであるapp.phpを使って計測しています。何か変な設定になっているなどありましたら、教えてください。再計測しますので。
[追記]
Symfony2をXHPrefで見てみました。ファイル探索のコストが高いので、ここらへんが改善ポイントでしょうか。