FuelPHPとCodeIgniterでCMS作ってパフォーマンスを比べてみた
FuelPHP Advent Calendar 2011 ということで、PHP フレームワーク FuelPHP に関するブログをクリスマスまでお届けしています。前日の@9ensanさんの記事はFuelPHPで作るログイン管理
過去記事一覧は、FuelPHP Advent Calendar 2011
CodeIgniterという軽量で高速な非常に気に入っているPHPのフレームワークがあるのですが、最近ライセンス問題が怪しいのと、バージョン2系になってから開発体制も怪しくなっていたので似た様なフレームワークを探していました。
すると、concrete5でもお世話になっている@kenji_sさんがFuelPHPをベタ褒めしていたので試してみる事にしました。
なるべく実際の環境に近い様にと超簡単なCMSを作って比べてみます。
このWebアプリがやっている事は、
- ページのパスからDB叩いてページID取得
- ページIDからそのページのコンテンツをDBから取得
- テンプレートファイルで指定してある描画エリアをキーにしてコンテンツをテンプレートファイル内に描画
と言う様なconcrete5っぽい動きをしています。
時間の都合でトップページ分のデータしか登録していませんし、そもそもCMSなのにコンテンツの登録機能とか作っていません。
まあ、でもベンチには充分だと思います。
可能な限り似た様な処理になる様に同じ様にコントローラとモデル、ビューファイルを作って同じ様に処理しています。
DBも同じテーブルを使っており、両方ともmysqli関数で接続しています。
サーバはさくらのクラウドです。
使ったバージョンはCodeIgniterはVer.2.1.0、FuelPHPはVer.1.1-RC1です。
ちょっとFuelPHPのDBまわりの設定で手間取りましたし、そもそもFuelPHPの正しいお作法に則って書かれているか怪しいですが、とりあえず出来ました。
で、例のごとくapacheベンチをかけて見ます。
ab -n200 -c200 http://cloud.xross-cube.net/CI/ ab -n200 -c200 http://cloud.xross-cube.net/Fuel/
ベンチ結果
で、結果は以下の通りです。
Requests per second | CodeIgniter | FuelPHP |
---|---|---|
1回目 | 42.74 | 39.38 |
2回目 | 30.51 | 46.43 |
3回目 | 17.15 | 17.46 |
4回目 | 45.06 | 46.77 |
5回目 | 44.87 | 21.95 |
平均 | 36.06 | 34.39 |
結論から言うとパフォーマンスは変わらなそうな感じです。
今回の環境はクラウド環境なのでどうもムラがある様です。
ちなみに、APCを有効にしてベンチかけたら下記の様な感じでした。*1
Requests per second | CodeIgniter | FuelPHP |
---|---|---|
1回目 | 126.33 | 72.11 |
2回目 | 119.95 | 26.98 |
3回目 | 37.30 | 17.46 |
4回目 | 25.92 | 93.03 |
5回目 | 119.19 | 49.71 |
平均 | 85.74 | 51.86 |
ちょっとCodeIgniterの方が速いですね。
結論
FuelPHPは書き方や使い方もCodeIgniter近いですし、なによりライセンスがMITでパッケージ機能があるのでかなり良い感じです。
今後も引き続き使ってみたいなーと思いました。
次は@ounziwさんの「FuelPHP の view に PHPTAL デザインテンプレートを使う」です。
*1:アプリ側でキャッシュ指定とかはしていません。