Edited at

PHP Web Framework Benchmark 2019

ローカルの仮想環境で各PHPフレームワークのベンチマークを測定しました。以下はその測定結果をまとめたものです。


環境情報


  • Ubuntu 18.04.2 LTS

  • PHP/7.3.7(PHP-FPM with OPcache)

  • Nginx/1.15.8


前提条件


  • "Hello World"を出力するだけのシンプルなコントローラクラスを使用する

  • フレームワークに環境設定がある場合は本番環境設定にする

  • オートローダーの最適化を行う 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

Requests/sec

Peak Memory


テンプレートエンジンベンチマーク(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

Requests/sec





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



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



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