CakePHP1と2のパフォーマンスを比較

CakePHP2.2になったので、1.3, 2.0, 2.1, 2.2で比較しました。
比較したコードは、postsテーブルをbakeしただけの単純なものです。
https://github.com/ichikaway/CakePHP-PerformanceCheckSample


この画面のように、ページング処理が入ったindexアクションを対象に計測しました。
DBには25,000件のレコードが入れてあり、その中から同じ20件を抽出して表示するアプリで比較しています。

環境

サーバ構成

  • サーバ: Dell SC440
    • Pentium Dual CPU E2180 @ 2.00GHz
    • 2G Memory
    • SATA HDD 7200rpm
  • OS: Ubuntu11 64bit
  • PHP 5.3.5 with APC
  • Apache 2.2.17
  • MySQL5.1

計測

Siegeというabのような計測ツールを利用しました。

下記のコマンドを実行。

siege -b -c 10 -t 3S

同時接続10クライアントで、3秒間の間にアクセスを発生し続けるという意味です。
これによって、1秒間に何アクセスさばけたのかというtrans/secが出ます。

計測は、同一サーバ内から行いました。本当は別のマシンから実行したほうが良いのですが、準備も大変ですし、単純に同じ環境で比較するのであれば、パフォーマンスの差を測るには大きな影響がないと思ってやっていません。


結果

このような結果になりました。値が大きいほどパフォーマンスが良いという意味です。


  • CakePHP1.3.11
    • 28trans/sec
  • CakePHP2.0.4
    • 40trans/sec
  • CakePHP2.1.0
    • 38trans/sec
  • CakePHP2.2.1
    • 34trans/sec


1.3からのパフォーマンスは最大40%アップ(cake2.0)でした。CakePHP2もバージョンがあがるごとに機能が増えているので、速度の低下がありました。
今後は2.2.1でボトルネックになっている箇所を見ていきたいと思います。