LoginSignup
0
1

More than 5 years have passed since last update.

PHP(とその他ちょっと)の幾つかのフレームワークで「get started」な状態のベンチを取った話

Posted at

思い立った理由

前回、zephirに触れて初投稿をしてから2週間ちょっと。

自分のモジュールのベンチも取っては見たものの、
この結果だけ記事にしてもあまりおもしろくないなぁ、と思い。

せっかくなので幾つかのフレームワークでチュートリアル初歩の初歩状態でベンチマーク計測して遊んでみましたので、
その結果を書いてみようかなぁ、と思います。

お願いと注意点

  • お金等いろいろないのでVirtualBox環境でやりました。正確な数値じゃないのはごめんなさい。
  • 私は「スケールアウト重視」「可読性重視」といったタイプの人なので、あまりこのデータの有用性とかは考えてませんので、参考程度でよろしくお願いします(汗)
  • そもそもほぼ静的なページを描画するベンチに意味があるのかってツッコミもなしで・・・

環境

  • MacMini(OSX 10.11.6)上でVirtualBoxを立ち上げCentOS6.8の仮想VMを作成し実行しました。
  • Webのフロントはnginx(v1.10.2)を利用しています。
  • PHP-fpm(v7.0.14)をUnixドメインソケットで受けて実行しています。Opcacheをenableにしてあります。
  • 割当てCPU数が1なので、子プロセス数も1にしてあります。
  • 転送量を同じにするため、どのフレームワークも描画するページはCodeIgniter3のWelcomeページに差し替えています。これをViewファイル(テンプレートファイル)を読み込む形で描画させています。
  • ベンチはローカルからapache bench(v2.3)で取りました。 実行コマンドはab -c 100 -t 5 http://localhost/のようになります
  • (一応慰め程度に)ベンチを5回取り、その平均のReq/secを調べました。

PHP7.1で動かそうと思ったらZephirが対応していないみたいでビルドしてもセグフォで落ちたので7.0で・・・

対象

対象にしたフレームワークは下記のものにしました

Phalcon3 (3.0.2)

https://phalconphp.com/ja/
PHPモジュール形式のフレームワーク。
速度を求める皆さんに大人気。最近はzephirで書かれているみたいです。
(というかzephir提供してくれてありがとうございます)
今回は手っ取り早くremiリポジトリのphp-phalconを利用しました

CodeIgniter3 (3.1.2)

https://codeigniter.com/
コードベースのフレームワークの中では一番早いと謳われてるみたいです。
Elislabのライセンス絡みで倦厭された時期もありますが、
その速度を理由に使う人も多いみたいです。
あ、そろそろ4が出るらしいですが、なんか機能を聞く限りイケてるフレームワークの気がします
(先日の段階で速度は3の約15%増し?でした)

CakePHP (3.3)

https://cakephp.org/jp
言わずもがな「PHPでフレームワークといったらCakeでしょ?」とか言われてしまうやつです。
PHPカンファレンス2016でも人気みたいでした。
個人的には昔バージョン違いで痛い目見たり、FatControllerにならざるを得なかったりで、あまり使わないかもしれません・・・。

Laravel (1.3.3)

https://laravel.com/
アーティザン(職人)のためのフレームワーク・・・という響きもさることながら、
PHPカンファレンス2016のフレームワーク投票でCakeと双璧だったらしいです
デザイン性の強いWebサービスの方から「使ってる」って話を聞くような気がします。

※ちなみに私はYii2が好きなのですが・・・・アレ?

結果

以下の表のとおりになっています。

Framework Req/Sec
Phalcon:3.0.2 844.066
CodeIgniter:3.1.2 106.068
CakePHP:3.3 16.194
Laravel:1.3.3 27.788

なんだろ・・・CakePHPが予想以上にスピードが出てない
debug=0にはしたのだけど、なにか設定が足りないとかなのでしょうか・・・。

Phalconは自由度が高いので、エンジン自体が軽量ですけど、
フレームワークとしてどう使うかがプロジェクトの質に左右されそうです。

で・・・

以前より他の方がベンチマークを上げられてたりしたときと、
そんなに変わらないかな(CakePHP除く)といった感じで、
「もっと他に良い記事あるよ・・・」となると思った次第です。

なので、ここからちょこっとだけ追加を。

Django

https://www.djangoproject.com
nginx + uwsgi(2.0.14) + Python(3.5.2) + django(1.10.4)でも、
同様のことをやってみました。
Python結構好きですが、まだ本当に詳しいところまでは知らないんですよね・・・
以前はgunicornを使っていたのですが、uwsgiで動かす方が良さそう。

Ruby on Rails

http://rubyonrails.org/
nginx + unicorn(5.2.0) + Ruby(2.3.1) + rails(5.0.0.1)でも、
同様のことをやってみました。
開発時にフレームワークとして重要な「Railsという共通認識」が強力でしょうから、ゲーム業界でも採用されるケースが多いのだと思いますが、
どうも個人的にUnicornは時々何かに引っかかる(動作速度が不安定?)事が多い体感がしまして・・・
多分技術力不足か知識不足なんだと思うので、どなたか色々教えてください!

再度、結果

Framework Req/Sec
Phalcon:3.0.2 844.066
django: 1.10.4 665.386
rails-5.0.0.1 262.896

まぁ、あんまり意味がない数字なんですよね・・・。
いつか生きた数字が取りたいものです。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1