EC-CUBEのカスタマイズ、ネットショップ制作メモ

主にEC-CUBEを利用したネットショップの制作、カスタマイズや独自機能の開発について

FuelPHPとCodeIgniterでCMS作ってパフォーマンスを比べてみた

FuelPHP Advent Calendar 2011 ということで、PHP フレームワーク FuelPHP に関するブログをクリスマスまでお届けしています。前日の@9ensanさんの記事はFuelPHPで作るログイン管理
過去記事一覧は、FuelPHP Advent Calendar 2011

CodeIgniterという軽量で高速な非常に気に入っているPHPフレームワークがあるのですが、最近ライセンス問題が怪しいのと、バージョン2系になってから開発体制も怪しくなっていたので似た様なフレームワークを探していました。


すると、concrete5でもお世話になっている@kenji_sさんがFuelPHPをベタ褒めしていたので試してみる事にしました。

なるべく実際の環境に近い様にと超簡単なCMSを作って比べてみます。
このWebアプリがやっている事は、

  1. ページのパスからDB叩いてページID取得
  2. ページIDからそのページのコンテンツをDBから取得
  3. テンプレートファイルで指定してある描画エリアをキーにしてコンテンツをテンプレートファイル内に描画

と言う様な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:アプリ側でキャッシュ指定とかはしていません。