今天用 ab 工具测试了一下框架,高效的性能让我吃惊 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
szopen
V2EX    PHP

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

  •  
  •   szopen 2017-03-31 11:35:45 +08:00 10889 次点击
    这是一个创建于 3117 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

    36 条回复    2017-04-10 10:35:56 +08:00
    codespots
        1
    codespots  
       2017-03-31 11:48:13 +08:00
    优雅的框架连垫底都是这么的优雅
    codespots
        2
    codespots  
       2017-03-31 11:49:35 +08:00
    up 主可以添加个 pure php 做完基准,还有可以添加测试下 Yaf 的性能
    szopen
        3
    szopen  
    OP
       2017-03-31 12:21:22 +08:00
    @westooy 纯 PHP 的没有可比较性
    linghutf
        4
    linghutf  
       2017-03-31 12:26:38 +08:00 via Android
    laravel 惨不忍睹
    codespots
        5
    codespots  
       2017-03-31 12:35:35 +08:00
    @szopen 我的意思是用纯 PHP 的性能做为基准,比较各种框架的性能损失,或者性能达到原生的百分比。当然了,框架的主要目的并不是在性能。
    run2
        6
    run2  
       2017-03-31 12:38:48 +08:00
    7.0 的对比呢?
    levn
        7
    levn  
       2017-03-31 12:50:40 +08:00
    如果有 xdebug profiler 的记录就更有意思了
    predator
        8
    predator  
       2017-03-31 13:06:24 +08:00
    居然没有 thinkphp !老外的视野不够开阔 =。=
    gouchaoer
        9
    gouchaoer  
       2017-03-31 13:09:48 +08:00
    laravel 那复杂的优雅我欣赏不来
    run2
        10
    run2  
       2017-03-31 13:11:08 +08:00
    @predator #8 是个鬼子啊,而且它的头像。。。。
    laoyuan
        11
    laoyuan  
       2017-03-31 13:24:23 +08:00
    第一的应该是 Silex
    vjnjc
        12
    vjnjc  
       2017-03-31 13:38:39 +08:00
    好久没写 php 了,我以前用的 Codeigniter 怎么都看不到。。。
    nilai
        13
    nilai  
       2017-03-31 13:42:29 +08:00
    @vjnjc ci-3.0
    tabris17
        14
    tabris17  
       2017-03-31 13:49:55 +08:00
    啥功能都没有,当然快了
    szopen
        15
    szopen  
    OP
       2017-03-31 14:09:25 +08:00
    @tabris17 MVC 功能都有,满足一个常规网站开放了,另外支持跨语言的服务功能正在开放中
    ss098
        16
    ss098  
       2017-03-31 14:10:36 +08:00
    opcache 对于 Laravel 性能提升是非常大的,之前我在服务器上通过 Laravel 执行一条简单的 SQL 要 200ms ,现在安装以后这个请求只要 20ms 。
    vjnjc
        17
    vjnjc  
       2017-03-31 14:13:52 +08:00
    @nilai 多谢~ci 还没垫底哈哈哈
    jhdxr
        18
    jhdxr  
       2017-03-31 14:14:45 +08:00
    @linghutf laravel 惨不忍睹是因为它**默认**启用了 session 支持,但其他框架一般默认是不启用的
    vibbow
        19
    vibbow  
       2017-03-31 14:41:06 +08:00
    @jhdxr 启用 session 支持也不应该对性能造成如此大的影响啊。
    szopen
        20
    szopen  
    OP
       2017-03-31 14:46:41 +08:00
    @ss098 估计大部份消耗都是在 autoload 上,我用 xdebug 分析了一下,总共 83 次的 autoload 调用消耗了我经 48%的时间
    ysz1121
        21
    ysz1121  
       2017-03-31 15:11:16 +08:00
    好低啊
    otakustay
        22
    otakustay  
       2017-03-31 17:01:22 +08:00
    没看懂,楼主的意思是社区的性能测试结论是在 apache 做 web 服务器的情况下得出的,而你是用 nginx 来做测试并试图与社区的结论进行对比?
    iwege
        23
    iwege  
       2017-03-31 20:40:34 +08:00
    讨论 laravel 垫底意义不大, laravel 算是全功能框架了,要看理论上应该先看 lumen.
    mingyun
        24
    mingyun  
       2017-03-31 23:04:13 +08:00
    laravel 垫底
    cxbig
        25
    cxbig  
       2017-03-31 23:25:39 +08:00
    空框架?有意义么?实际的产品快不快不完全是框架的问题。
    aksoft
        26
    aksoft  
       2017-04-01 09:18:53 +08:00
    追求速度 脚本 请用 lua
    qqjt
        27
    qqjt  
       2017-04-01 10:05:12 +08:00
    qqjt
        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.”
    lianxiaoyi
        29
    lianxiaoyi  
       2017-04-01 10:17:40 +08:00
    yaf 秒杀全场
    we3613040
        30
    we3613040  
       2017-04-01 10:22:03 +08:00
    我大 ci 就是牛逼
    killerv
        31
    killerv  
       2017-04-01 11:19:17 +08:00
    框架对比性能的意义不大,就像是对比卡车的速度和超跑的载重一样,如果真的那么追求性能,就不要使用框架,甚至不要使用 php ,另外 Laravel 优化之后性能并没有那么差。
    sagaxu
        32
    sagaxu  
       2017-04-01 11:24:05 +08:00
    你重新定义了高效
    sampeng
        33
    sampeng  
       2017-04-01 14:10:18 +08:00
    你就是 c 原生写,一个 sql 堵 2s ,吞吐也不可能上去
    treycheng
        34
    treycheng  
       2017-04-01 17:07:55 +08:00
    这么多年还在吐槽框架性能。。。。你要性能怎么不去写 C 呢
    szopen
        35
    szopen  
    OP
       2017-04-05 10:09:29 +08:00
    一个流行框架有性能总比没性能好,否则怎么能进步?
    qwe3364925
        36
    qwe3364925  
       2017-04-10 10:35:56 +08:00
    建议你看下 yaf 框架
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2744 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 08:37 PVG 16:37 LAX 01:37 JFK 04:37
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86