今天用 ab 工具测试了一下框架,高效的性能让我吃惊

2017-03-31 11:35:45 +08:00
 szopen

首先展示一下其他主要框架的测试:

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

业务:

  1. 构造和输出了一个 HTML 表单
  2. 查询了一个 MySQL 空表
  3. 初始化了 session, session 存在了数据库的一个 memory 表中
  4. 路由用的是 symfony 的路由器

测试结果:

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 略低

内存占用:

  1. usage 2.4M
  2. peak 2.4M

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 相差好大

10338 次点击
所在节点    PHP
36 条回复
codespots
2017-03-31 11:48:13 +08:00
优雅的框架连垫底都是这么的优雅
codespots
2017-03-31 11:49:35 +08:00
up 主可以添加个 pure php 做完基准,还有可以添加测试下 Yaf 的性能
szopen
2017-03-31 12:21:22 +08:00
@westooy 纯 PHP 的没有可比较性
linghutf
2017-03-31 12:26:38 +08:00
laravel 惨不忍睹
codespots
2017-03-31 12:35:35 +08:00
@szopen 我的意思是用纯 PHP 的性能做为基准,比较各种框架的性能损失,或者性能达到原生的百分比。当然了,框架的主要目的并不是在性能。
sobigfish
2017-03-31 12:38:48 +08:00
7.0 的对比呢?
levn
2017-03-31 12:50:40 +08:00
如果有 xdebug profiler 的记录就更有意思了
predator
2017-03-31 13:06:24 +08:00
居然没有 thinkphp !老外的视野不够开阔 =。=
gouchaoer
2017-03-31 13:09:48 +08:00
laravel 那复杂的优雅我欣赏不来
sobigfish
2017-03-31 13:11:08 +08:00
@predator #8 是个鬼子啊,而且它的头像。。。。
laoyuan
2017-03-31 13:24:23 +08:00
第一的应该是 Silex
vjnjc
2017-03-31 13:38:39 +08:00
好久没写 php 了,我以前用的 Codeigniter 怎么都看不到。。。
nilai
2017-03-31 13:42:29 +08:00
@vjnjc ci-3.0
tabris17
2017-03-31 13:49:55 +08:00
啥功能都没有,当然快了
szopen
2017-03-31 14:09:25 +08:00
@tabris17 MVC 功能都有,满足一个常规网站开放了,另外支持跨语言的服务功能正在开放中
ss098
2017-03-31 14:10:36 +08:00
opcache 对于 Laravel 性能提升是非常大的,之前我在服务器上通过 Laravel 执行一条简单的 SQL 要 200ms ,现在安装以后这个请求只要 20ms 。
vjnjc
2017-03-31 14:13:52 +08:00
@nilai 多谢~ci 还没垫底哈哈哈
jhdxr
2017-03-31 14:14:45 +08:00
@linghutf laravel 惨不忍睹是因为它**默认**启用了 session 支持,但其他框架一般默认是不启用的
vibbow
2017-03-31 14:41:06 +08:00
@jhdxr 启用 session 支持也不应该对性能造成如此大的影响啊。
szopen
2017-03-31 14:46:41 +08:00
@ss098 估计大部份消耗都是在 autoload 上,我用 xdebug 分析了一下,总共 83 次的 autoload 调用消耗了我经 48%的时间

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/351699

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX