CakePHP1.3 RC3とCakePHP1.2.6のベンチマーク比較
環境
- OS Windows Vista 32bit Home Edition
- PHP5.2.6
- APCなし
- mysql Ver 14.14 Distrib 5.1.42, for Win32 (ia32)
セットアップ
- githubのダウンロードページからそれぞれのアーカイブを取得して展開、以下のように配置
- WEBROOT/cakebench/12 <= 1.2.6
- WEBROOT/cakebench/13 <= 1.3 RC3
- config/core.phpの書き換え
- Configure::write('debug', 0); // 運用モード
- Security.saltとSecurity.cipherSeedを適切に変更
- Security.levelはmediumに統一
Route
<?php Router::connect('/', array('controller' => 'bench', 'action' => 'index')); Router::connect('/:action', array('controller' => 'bench')); ?>
Controller
bench_controller.php
<?php class BenchController extends AppController{ var $name = "Bench"; var $uses = array(); function index(){ } function model(){ $this->loadModel('Event'); $this->helpers = array('Form'); } }
View
layouts/default.ctp
<?php echo $content_for_layout ?>
bench/index.ctp
Hello World!!
bench/model.ctp
<?php echo $form->create('Event'); echo $form->input('name'); echo $form->end('submit'); ?>
計測方法
apache benchを用います。
オプションは ab -c 100 -n 1000 です。
10回計測した中で、Request per second(#/sec)が最も大きいものを比較対象とします。
単純なHello Worldアプリケーション(indexアクション)
1.2.6
C:\apache\bin>ab -c 100 -n 1000 http://localhost/cakebench/12/ (略) Requests per second: 13.99 [#/sec] (mean) Time per request: 7147.920 [ms] (mean) Time per request: 71.479 [ms] (mean, across all concurrent requests) (略)
1.3 RC3
C:\apache\bin>ab -c 100 -n 1000 http://localhost/cakebench/13/ (略) Requests per second: 13.97 [#/sec] (mean) Time per request: 7160.400 [ms] (mean) Time per request: 71.604 [ms] (mean, across all concurrent requests) (略)
有意な差はほとんどありませんでした。
モデルを読み込む(modelアクション)
単一モデルを読み込み、Formヘルパでごく単純なフォームを出力します。
1.2.6
C:\apache\bin>ab -c 100 -n 1000 http://localhost/cakebench/12/model (略) Requests per second: 8.35 [#/sec] (mean) Time per request: 11977.680 [ms] (mean) Time per request: 119.777 [ms] (mean, across all concurrent requests) (略)
1.3 RC3
C:\apache\bin>ab -c 100 -n 1000 http://localhost/cakebench/13/model (略) Requests per second: 8.50 [#/sec] (mean) Time per request: 11767.080 [ms] (mean) Time per request: 117.671 [ms] (mean, across all concurrent requests) (略)
約1.8%の差が生じています。
まとめ
今回は非常に単純なアプリケーションでベンチを取りました。
ごく単純なHello Worldアプリケーションでは、差が見受けられませんでしたが、同様のテストで速くなったよ、という報告もあります。
これには環境による部分も大きくあると思います。しかし、少なくとも1.3にしたから遅くなったということはまずないでしょう。
更に言及すると、1.3の速度改善点はこのような単純なアプリケーションではなく、複雑な(現実的な)Routeを使う場合や、bootstrapあたりの速度改善など、今回では計測できない部分に多く及びます。
これらの速度改善の恩恵を実感するには複雑な計測が必要なので、今回はパスします。ごめんなさい。
以上の結果から、速度面での不安はないと言って良く、むしろ良好になるであろうという推定が成り立ちます。