45
33

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

PHP Web Framework Benchmark 2019

Last updated at Posted at 2019-07-29

ローカルの仮想環境で各PHPフレームワークのベンチマークを測定しました。以下はその測定結果をまとめたものです。なお、測定結果は測定する環境や条件によって異なると思います。フレームワーク選定の際は、ご自身の環境や条件で測定することをお勧めします。

##環境情報

  • Ubuntu 18.04.2 LTS
  • PHP/7.3.7(PHP-FPM with OPcache)
  • Nginx/1.15.8

##前提条件

  • "Hello World"を出力するだけのシンプルなコントローラクラスを使用する
  • フレームワークに環境設定がある場合は本番環境設定にする(デバッグモードもOFF)
  • オートローダーの最適化を行う 1
  • フレームワークにルーティングや設定ファイルのキャッシュ機能がある場合はキャッシュを行う

##測定ツール

ツール:wrk
実行条件:スレッド数10、コネクション数10(1スレッドあたり1コネクション)

# 実行例
wrk -t10 -c10 -d10s http://localhost/hello

##測定結果

フレームワーク GitHub
スター数
バージョン Requests/sec Peak Memory 2
Laravel 53.8k 5.8.29 6.29 2.59M
Laravel (Lumen) 1k 5.8.11 38.03 1.03M
Symfony 21.3k 4.3.2 3.49 1.92M
Zend Framework 5.7k 3.0.1 9.48 1.43M
CakePHP 7.9k 3.8.1 14.08 1.72M
CodeIgniter 17.5k 3.1.10 54.10 0.70M
Yii2 13k 2.0.23 26.85 1.47M
FuelPHP 1.4k 1.8.2 26.35 0.93M
Phalcon 9.8k 3.4.4 199.97 0.67M
ice framework 0.3k 1.4.1 108.85 0.67M
Slim 10k 3.12.1 41.31 0.91M
PHPixie - 3.13 6.49 1.19M
StaticPHP - 1.1.0 52.08 0.71M
Fat-Free Framework 2.3k 3.6.5 329.96 0.74M
Siler (without Swoole) 0.7k 1.5.3 81.64 0.67M
Siler (with Swoole) 0.7k 1.5.3 1698.66 1.56M

:bar_chart: Requests/sec
tmp.png

:bar_chart: Peak Memory
tmp.png

#テンプレートエンジンベンチマーク(2019/08/05追記)

##環境情報
同上

##前提条件

  • "Hello xxxx"を出力するだけのシンプルなビューを使用する(xxxxには変数をアサイン)
  • オートローダーの最適化を行う 1
  • キャッシュ機能がある場合はキャッシュを行った状態で測定する

##測定ツール
同上

##測定結果

エンジン GitHub
スター数
バージョン Requests/sec
Latte 0.4k 2.5.2 155.61
Plates 1k 3.3.0 149.92
Smarty 1.5k 3.1.33 89.25
Twig 6.2k 2.11.3 89.02
Blade(standalone ver.) 3 0.3k 1.2.2 43.26

:bar_chart: Requests/sec
tmp.png

#フレームワークベンチマーク(2019/10/30追記)

以下の言及がありましたのでOPCacheチューニング後に再計測しました。

フレームワーク チューニング前
Requests/sec
チューニング後
Requests/sec
Laravel 6.29 41.03
Laravel (Lumen) 38.03 284.97
Symfony 3.49 98.53
Zend Framework 9.48 218.05
CakePHP 14.08 125.01
CodeIgniter 54.10 60.51
Yii2 26.85 49.9
FuelPHP 26.35 42.65
Phalcon 199.97 271.39
ice framework 108.85 109.97
Slim 41.31 404.37
PHPixie 6.49 105.15
StaticPHP 52.08 130.17
Fat-Free Framework 329.96 340.32
Siler (without Swoole) 81.64 427.17

:bar_chart: チューニング後 Requests/sec
tmp.png

  1. https://getcomposer.org/doc/articles/autoloader-optimization.md 2

  2. レスポンス返却直前にmemory_get_peak_usage(false) で値を取得

  3. Laravelのライブラリに依存しているため遅いが、依存ライブラリのないBladeOneというのもあり、こちらの方がスループットは良い

45
33
3

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
45
33

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?