Help us understand the problem. What is going on with this article?

PHP Web Framework Benchmark 2019

More than 1 year has passed since last update.

ローカルの仮想環境で各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. レスポンス返却直前にmemory_get_peak_usage(false) で値を取得 

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

prograti
Web Application Developer, Web Director, SEO Engineer, WordPress Developer
https://twitter.com/prograti
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away