首先展示一下其他主要框架的测试:
https://github.com/kenjis/php-framework-benchmark
框架地址:
https://github.com/chopins/toknot
测试用例是仓库中app/admin应用
我的测试环境:
与上面用 apache web 服务器不同,我用的是 nginx
php 版本: 5.6.0
php 扩展情况:
[PHP Modules] Core date ereg mysqli mysqlnd pcre PDO pdo_mysql Reflection session SPL standard Zend OPcache [Zend Modules] Zend OPcache
php-fpm 配置:
pm.max_children = 8 pm.start_servers = 4 pm.max_spare_servers = 4 pm.min_spare_servers = 2
测试命令:
ab -n 10000 -c 4 http://127.0.0.1/account/signup
业务:
测试结果:
Server Software: nginx/1.10.2 Server Hostname: 127.0.0.1 Server Port: 80 Document Path: /account/signup Document Length: 36 bytes Concurrency Level: 4 Time taken for tests: 11.643 seconds Complete requests: 10000 Failed requests: 0 Total transferred: 2600000 bytes HTML transferred: 360000 bytes Requests per second: 858.89 [#/sec] (mean) Time per request: 4.657 [ms] (mean) Time per request: 1.164 [ms] (mean, across all concurrent requests) Transfer rate: 218.08 [Kbytes/sec] received
858.89
RPS 比 CI-3.0 的 753.09
略高,比 fatfree3.5 的 965.16
略低
内存占用:
PHP 7.0 测试情况
opcache 版本:
Concurrency Level: 8 Time taken for tests: 7.578 seconds Complete requests: 10000 Failed requests: 7 (Connect: 0, Receive: 0, Length: 7, Exceptions: 0) Total transferred: 102427973 bytes HTML transferred: 100177973 bytes Requests per second: 1319.60 [#/sec] (mean) Time per request: 6.062 [ms] (mean) Time per request: 0.758 [ms] (mean, across all concurrent requests) Transfer rate: 13199.60 [Kbytes/sec] received
无 opcache 版本:
Concurrency Level: 100 Time taken for tests: 190.636 seconds Complete requests: 50000 Failed requests: 41 (Connect: 0, Receive: 0, Length: 41, Exceptions: 0) Total transferred: 512146699 bytes HTML transferred: 500896699 bytes Requests per second: 262.28 [#/sec] (mean) Time per request: 381.271 [ms] (mean) Time per request: 3.813 [ms] (mean, across all concurrent requests) Transfer rate: 2623.55 [Kbytes/sec] received
有无 opcache 相差好大
![]() | 1 codespots 2017-03-31 11:48:13 +08:00 优雅的框架连垫底都是这么的优雅 |
![]() | 2 codespots 2017-03-31 11:49:35 +08:00 up 主可以添加个 pure php 做完基准,还有可以添加测试下 Yaf 的性能 |
![]() | 4 linghutf 2017-03-31 12:26:38 +08:00 via Android laravel 惨不忍睹 |
![]() | 5 codespots 2017-03-31 12:35:35 +08:00 @szopen 我的意思是用纯 PHP 的性能做为基准,比较各种框架的性能损失,或者性能达到原生的百分比。当然了,框架的主要目的并不是在性能。 |
![]() | 6 run2 2017-03-31 12:38:48 +08:00 7.0 的对比呢? |
![]() | 7 levn 2017-03-31 12:50:40 +08:00 如果有 xdebug profiler 的记录就更有意思了 |
![]() | 8 predator 2017-03-31 13:06:24 +08:00 居然没有 thinkphp !老外的视野不够开阔 =。= |
![]() | 9 gouchaoer 2017-03-31 13:09:48 +08:00 laravel 那复杂的优雅我欣赏不来 |
![]() | 11 laoyuan 2017-03-31 13:24:23 +08:00 第一的应该是 Silex |
![]() | 12 vjnjc 2017-03-31 13:38:39 +08:00 好久没写 php 了,我以前用的 Codeigniter 怎么都看不到。。。 |
![]() | 14 tabris17 2017-03-31 13:49:55 +08:00 啥功能都没有,当然快了 |
![]() | 16 ss098 2017-03-31 14:10:36 +08:00 opcache 对于 Laravel 性能提升是非常大的,之前我在服务器上通过 Laravel 执行一条简单的 SQL 要 200ms ,现在安装以后这个请求只要 20ms 。 |
![]() | 20 szopen OP @ss098 估计大部份消耗都是在 autoload 上,我用 xdebug 分析了一下,总共 83 次的 autoload 调用消耗了我经 48%的时间 |
![]() | 21 ysz1121 2017-03-31 15:11:16 +08:00 好低啊 |
![]() | 22 otakustay 2017-03-31 17:01:22 +08:00 没看懂,楼主的意思是社区的性能测试结论是在 apache 做 web 服务器的情况下得出的,而你是用 nginx 来做测试并试图与社区的结论进行对比? |
![]() | 23 iwege 2017-03-31 20:40:34 +08:00 讨论 laravel 垫底意义不大, laravel 算是全功能框架了,要看理论上应该先看 lumen. |
24 mingyun 2017-03-31 23:04:13 +08:00 laravel 垫底 |
![]() | 25 cxbig 2017-03-31 23:25:39 +08:00 空框架?有意义么?实际的产品快不快不完全是框架的问题。 |
26 aksoft 2017-04-01 09:18:53 +08:00 追求速度 脚本 请用 lua |
![]() | 27 qqjt 2017-04-01 10:05:12 +08:00 关于性能, laravel 框架作者这么说: https://medium.com/@taylorotwell/benchmarking-laravel-symfony-zend-2c01c2b270f8 |
![]() | 28 qqjt 2017-04-01 10:05:47 +08:00 “ Before beginning, know that all of these frameworks are fast enough to handle any application you are ever likely to build. I hesitated to even write this post because I think PHP ’ s unique obsession with benchmarking on this level is really, really silly. My only goal is to show how to perform a fair comparison between the three.” |
![]() | 29 lianxiaoyi 2017-04-01 10:17:40 +08:00 yaf 秒杀全场 |
30 we3613040 2017-04-01 10:22:03 +08:00 我大 ci 就是牛逼 |
31 killerv 2017-04-01 11:19:17 +08:00 框架对比性能的意义不大,就像是对比卡车的速度和超跑的载重一样,如果真的那么追求性能,就不要使用框架,甚至不要使用 php ,另外 Laravel 优化之后性能并没有那么差。 |
![]() | 32 sagaxu 2017-04-01 11:24:05 +08:00 你重新定义了高效 |
33 sampeng 2017-04-01 14:10:18 +08:00 你就是 c 原生写,一个 sql 堵 2s ,吞吐也不可能上去 |
![]() | 34 treycheng 2017-04-01 17:07:55 +08:00 这么多年还在吐槽框架性能。。。。你要性能怎么不去写 C 呢 |
![]() | 35 szopen OP 一个流行框架有性能总比没性能好,否则怎么能进步? |
36 qwe3364925 2017-04-10 10:35:56 +08:00 建议你看下 yaf 框架 |