php framework benchmark
1.0.0
該項目試圖測量現實世界中PHP框架的最低開銷(最低引導成本)。
因此,我認為基準的最低申請不應包括:
模板引擎或ORM/數據庫庫之類的組件在此項目中不超出範圍。
這是master分支。
--optimize-autoloader 。有些人可能認為使用默認配置是不公平的。但是我認為框架的默認配置是對其的主張。默認配置是了解框架的好起點。而且我無法優化所有框架。有些框架是優化的,有些不是,這是不公平的。因此,我沒有刪除任何組件/配置。
但是,如果您有興趣通過優化進行基準測試(刪除未使用的組件/配置),請參見“優化分支”。
如果您發現我的代碼有問題,請隨時發送拉動請求。但是請注意,僅對“ Hello World”進行優化是不可接受的。構建最快的“ Hello World”應用程序不是該項目的目標。
這些是我的基準,而不是您的基準。我鼓勵您在(生產等效)環境下運行。
(2017/02/14)

| 框架 | 每秒請求 | 相對的 | 峰值內存 | 相對的 |
|---|---|---|---|---|
| Siler-0.6 | 2,069.69 | 20.3 | 0.25 | 1.0 |
| kumbia-1.0-dev | 1,753.60 | 17.2 | 0.29 | 1.2 |
| staticphp-0.9 | 1,665.28 | 16.3 | 0.27 | 1.1 |
| Phalcon-2.0 | 1,618.39 | 15.9 | 0.26 | 1.1 |
| TIPSY-0.10 | 1,376.97 | 13.5 | 0.32 | 1.3 |
| fatfree-3.5 | 965.16 | 9.5 | 0.41 | 1.7 |
| CI-3.0 | 753.09 | 7.4 | 0.42 | 1.7 |
| Nofuss-1.2 | 667.24 | 6.5 | 0.40 | 1.6 |
| Slim-3.0 | 550.43 | 5.4 | 0.61 | 2.5 |
| 熊1.0 | 502.52 | 4.9 | 0.73 | 3.0 |
| Lumen-5.1 | 415.57 | 4.1 | 0.85 | 3.5 |
| yii-2.0 | 410.08 | 4.0 | 1.32 | 5.4 |
| ZE-1.0 | 403.34 | 4.0 | 0.75 | 3.1 |
| Cygnite-1.3 | 369.12 | 3.6 | 0.71 | 2.9 |
| 燃料1.8 | 344.26 | 3.4 | 0.63 | 2.6 |
| Silex-2.0 | 342.81 | 3.4 | 0.78 | 3.2 |
| phpixie-3.2 | 267.24 | 2.6 | 1.25 | 5.1 |
| Aura-2.0 | 233.54 | 2.3 | 0.88 | 3.6 |
| 蛋糕3.2 | 174.91 | 1.7 | 1.95 | 7.9 |
| ZF-3.0 | 133.87 | 1.3 | 2.24 | 9.1 |
| Symfony-3.0 | 131.50 | 1.3 | 2.18 | 8.9 |
| Laravel-5.3 | 101.94 | 1.0 | 2.83 | 11.5 |
注意(1):所有結果均在PHP上使用phalcon.so和ice.so運行。如果您不加載phalcon.so或ice。
注意(2):該基準受到ab性能的限制。參見#62。
如果您想基於Phalcon等基準PHP擴展框架,則需要安裝ExtenStions。
將源代碼安裝為http:// localhost/php-framework基準/:
$ git clone https://github.com/kenjis/php-framework-benchmark.git
$ cd php-framework-benchmark
$ bash setup.sh
運行基準:
$ bash benchmark.sh
請參閱http:// localhost/php-framework基準/。
如果您想基準一些框架:
$ bash setup.sh fatfree-3.5/ slim-3.0/ lumen-5.1/ silex-1.3/
$ bash benchmark.sh fatfree-3.5/ slim-3.0/ lumen-5.1/ silex-1.3/
我在/etc/sysctl.conf中添加
# Added
net.netfilter.nf_conntrack_max = 100000
net.nf_conntrack_max = 100000
net.ipv4.tcp_max_tw_buckets = 180000
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_fin_timeout = 10
並運行sudo sysctl -p 。
如果要查看當前配置,請運行sudo sysctl -a 。
<VirtualHost *:80>
DocumentRoot /home/vagrant/public
</VirtualHost>