サーバやフレームワークなどのチューニングはほとんどしていないので、
結果は、あくまで参考程度としてください。
テスト環境
仮想環境 (1CPU memory 4GB) PHP 5.5.9 (opcache使用) NGINX 1.4.5
確認したコマンド※
ab -n 1000 -c 20 http://localhost.local/ ※外部からではなく同じサーバで実施しています。
結果
Phalcon 1.2.6
Time taken for tests: 0.523 seconds
Requests per second: 1910.87 [#/sec]
FuelPHP 1.7
Time taken for tests: 1.704 seconds
Requests per second: 586.90 [#/sec]
Laravel 4.1
Time taken for tests: 6.171 seconds
Requests per second: 162.04 [#/sec]
php artisan optimizeで最適化
Time taken for tests: 4.925 seconds
Requests per second: 203.02 [#/sec]
Ruby on Rails 4.0.3 (特別ゲスト)
Time taken for tests: 2.851 seconds
Requests per second: 350.73 [#/sec]
Ruby On Rails4も含めてみました。
環境はPHPとは異なり次のとおりです。
NGINX 1.4.4 Passenger4.0.37 ruby 2.1.0
感想
Phalconが圧倒的な処理速度で1位です。
Laravelと比較すると約11倍以上速いですね。
FuelPHPはLaravel寄りではありますが、まずまずの性能です。
artisanコマンドで最適化されたLaravelでもそれほど大幅には変化がなかった(でもLaravel比だと25%アップ)ので、速度が出ないのは、autoloadが原因ということはなさそうです。
LaravelはIoC Containerというのが得意で、コードがきれいで書きやすいのですが、
それが原因かどうかはわかりませんがパフォーマンス面では他に劣るようです。
今のところPHPでもRailsと同様にパフォーマンスと便利な機能は相反するようですね。
またPhalconが速いのはC言語で実装されたフレームワークの部分だけなのでPHP部分はそんなに変わらないのではないかと思います。
結果はPhalconが目立ちすぎてますが、実際のロジックを実装した状態ではそこまでは差がないのではないかと考えています。
また、PhalconはC言語で実装されているので運用面でトラブルの際の調査も難しくなりそうで、
仕事に使うのはZephirで実装されるバージョン2.0までは様子をみようかと思っています。
Zephirは今後どうなるか気になるところです。
LaravelがZephirで実装されたりとか・・・、今のところその動きはなさそうですが。
Railsは、言語違いますがフルスタックのフレームワークの代表例として参考になるかと思って追加しました。
LaravelとFuelPHPの中間くらいで以前より速くなってますね。
RubyのVMが進化していたり、Rails自体もチューニングが進んでいるのかも。
いずれにせよ、現実的ではないHelloWorld程度の比較なので、
あまりこの結果を鵜呑みにしないようにご注意ください。
0 件のコメント:
コメントを投稿