资讯专栏INFORMATION COLUMN

2017 非标准 PHP 框架性能测试比较

aikin / 3613人阅读

摘要:我最近在给完善说明文档有一节是性能测试比较才有了下面这个项目项目托管地址针对上比较活跃的几个开源项目,做了简单的比较。供大家参考所有框架仅输出就仅测试框架的本身的性能。如果有精力可以测下带有数据库交互的测试。祝国内产生更多优秀的开源产品

我最近在给tastphp 完善说明文档 有一节是性能测试比较 ,才有了下面这个项目

项目托管地址: https://github.com/xujiajun/p...

针对github上比较活跃的几个开源项目,做了简单的比较。供大家参考:

php framework benchmark (include laravel、symfony、silex、lumen、slim、yii2、tastphp)

所有框架仅输出 "ok",就仅测试框架的本身的性能。如果有精力可以测下带有数据库交互的测试。

以下测试仅供参考,如果你想测的准,建议在生产环境测试!

测试的环境
OS Name:        Mac OS X
OS Version:     10.12.6
Architecture:   x86_64
CPU:Intel Core i7  1.7 GHz *2
RAM:8 GB
PHP version 7.1.10
opcache 开的
各个框架的版本
Laravel version 5.5.0
Lumen version 5.5.0
symfony version 3.3.10
Silex version 2.0.2
Silm version 3.1.4
yii2 version 2.0.12
Tastphp version 1.3.6
测试结果

Detail Laravel ab test

Laravel version 5.5.0

optimization

run commands before test:

composer install --optimize-autoloader
php artisan config:cache
// php artisan route:cache  //cannot use route caching if you have ANY route closures

ab test result:

➜  laravel-5.5.0 git:(master) ✗ ab -n 1000 -c 100 http://laravel-benchmark.dev/
This is ApacheBench, Version 2.3 <$Revision: 1757674 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking laravel-benchmark.dev (be patient)
Completed 100 requests
Completed 200 requests
Completed 300 requests
Completed 400 requests
Completed 500 requests
Completed 600 requests
Completed 700 requests
Completed 800 requests
Completed 900 requests
Completed 1000 requests
Finished 1000 requests


Server Software:        nginx/1.12.0
Server Hostname:        laravel-benchmark.dev
Server Port:            80

Document Path:          /
Document Length:        2 bytes

Concurrency Level:      100
Time taken for tests:   3.295 seconds
Complete requests:      1000
Failed requests:        0
Total transferred:      982346 bytes
HTML transferred:       2000 bytes
Requests per second:    303.46 [#/sec] (mean)
Time per request:       329.538 [ms] (mean)
Time per request:       3.295 [ms] (mean, across all concurrent requests)
Transfer rate:          291.11 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    1   1.8      0       8
Processing:    22  311  59.4    315     571
Waiting:       22  311  59.4    315     571
Total:         30  312  58.0    315     571

Percentage of the requests served within a certain time (ms)
  50%    315
  66%    335
  75%    351
  80%    354
  90%    362
  95%    367
  98%    378
  99%    407
 100%    571 (longest request)
Lumen version 5.5.0

run commands before test:

composer install --optimize-autoloader

ab test result:

➜  lumen-5.5.0 git:(master) ✗ ab -n 1000 -c 100 http://lumen-benchmark.dev/
This is ApacheBench, Version 2.3 <$Revision: 1757674 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking lumen-benchmark.dev (be patient)
Completed 100 requests
Completed 200 requests
Completed 300 requests
Completed 400 requests
Completed 500 requests
Completed 600 requests
Completed 700 requests
Completed 800 requests
Completed 900 requests
Completed 1000 requests
Finished 1000 requests


Server Software:        nginx/1.12.0
Server Hostname:        lumen-benchmark.dev
Server Port:            80

Document Path:          /
Document Length:        2 bytes

Concurrency Level:      100
Time taken for tests:   0.639 seconds
Complete requests:      1000
Failed requests:        0
Total transferred:      199000 bytes
HTML transferred:       2000 bytes
Requests per second:    1565.02 [#/sec] (mean)
Time per request:       63.897 [ms] (mean)
Time per request:       0.639 [ms] (mean, across all concurrent requests)
Transfer rate:          304.14 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   0.9      0       6
Processing:     9   61   9.9     62      74
Waiting:        9   61   9.9     62      74
Total:         14   61   9.1     62      74

Percentage of the requests served within a certain time (ms)
  50%     62
  66%     64
  75%     65
  80%     66
  90%     68
  95%     71
  98%     72
  99%     73
 100%     74 (longest request)
Symfony version 3.3.10

run commands before test:

composer install --optimize-autoloader

ab test result:

➜  symfony-3.3.10 git:(master) ✗ ab -n 1000 -c 100 http://symfony-benchmark.dev/
This is ApacheBench, Version 2.3 <$Revision: 1757674 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking symfony-benchmark.dev (be patient)
Completed 100 requests
Completed 200 requests
Completed 300 requests
Completed 400 requests
Completed 500 requests
Completed 600 requests
Completed 700 requests
Completed 800 requests
Completed 900 requests
Completed 1000 requests
Finished 1000 requests


Server Software:        nginx/1.12.0
Server Hostname:        symfony-benchmark.dev
Server Port:            80

Document Path:          /
Document Length:        2 bytes

Concurrency Level:      100
Time taken for tests:   1.716 seconds
Complete requests:      1000
Failed requests:        0
Total transferred:      237000 bytes
HTML transferred:       2000 bytes
Requests per second:    582.60 [#/sec] (mean)
Time per request:       171.646 [ms] (mean)
Time per request:       1.716 [ms] (mean, across all concurrent requests)
Transfer rate:          134.84 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    1   0.9      0       5
Processing:    12  163  34.6    168     218
Waiting:       12  163  34.6    168     218
Total:         17  163  33.9    169     218
WARNING: The median and mean for the initial connection time are not within a normal deviation
        These results are probably not that reliable.

Percentage of the requests served within a certain time (ms)
  50%    169
  66%    176
  75%    184
  80%    187
  90%    199
  95%    207
  98%    211
  99%    213
 100%    218 (longest request)
Silex version 2.0.2

run commands before test:

composer install --optimize-autoloader

ab test result:

➜  silex-2.0.2 git:(master) ✗ ab -n 1000 -c 100 http://silex-benchmark.dev/
This is ApacheBench, Version 2.3 <$Revision: 1757674 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking silex-benchmark.dev (be patient)
Completed 100 requests
Completed 200 requests
Completed 300 requests
Completed 400 requests
Completed 500 requests
Completed 600 requests
Completed 700 requests
Completed 800 requests
Completed 900 requests
Completed 1000 requests
Finished 1000 requests


Server Software:        nginx/1.12.0
Server Hostname:        silex-benchmark.dev
Server Port:            80

Document Path:          /
Document Length:        2 bytes

Concurrency Level:      100
Time taken for tests:   0.747 seconds
Complete requests:      1000
Failed requests:        0
Total transferred:      237000 bytes
HTML transferred:       2000 bytes
Requests per second:    1338.53 [#/sec] (mean)
Time per request:       74.709 [ms] (mean)
Time per request:       0.747 [ms] (mean, across all concurrent requests)
Transfer rate:          309.80 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   0.9      0       4
Processing:    15   71   9.3     73      88
Waiting:       15   71   9.3     73      88
Total:         20   72   8.6     73      89

Percentage of the requests served within a certain time (ms)
  50%     73
  66%     74
  75%     75
  80%     76
  90%     79
  95%     81
  98%     82
  99%     84
 100%     89 (longest request)
slim version 3.1.4

run commands before test:

composer install --optimize-autoloader

ab test:

➜  silm-3.1.4 git:(master) ✗ ab -n 1000 -c 100 http://slim-benchmark.dev/
This is ApacheBench, Version 2.3 <$Revision: 1757674 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking slim-benchmark.dev (be patient)
Completed 100 requests
Completed 200 requests
Completed 300 requests
Completed 400 requests
Completed 500 requests
Completed 600 requests
Completed 700 requests
Completed 800 requests
Completed 900 requests
Completed 1000 requests
Finished 1000 requests


Server Software:        nginx/1.12.0
Server Hostname:        slim-benchmark.dev
Server Port:            80

Document Path:          /
Document Length:        2 bytes

Concurrency Level:      100
Time taken for tests:   0.703 seconds
Complete requests:      1000
Failed requests:        0
Total transferred:      333000 bytes
HTML transferred:       2000 bytes
Requests per second:    1423.44 [#/sec] (mean)
Time per request:       70.252 [ms] (mean)
Time per request:       0.703 [ms] (mean, across all concurrent requests)
Transfer rate:          462.90 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   1.0      0       5
Processing:     7   67  15.7     65     210
Waiting:        7   66  15.7     65     210
Total:         12   67  15.1     66     210

Percentage of the requests served within a certain time (ms)
  50%     66
  66%     69
  75%     70
  80%     72
  90%     88
  95%     96
  98%    102
  99%    105
 100%    210 (longest request)
yii2 version 2.0.12

run commands before test:

composer install --optimize-autoloader

ab test result:

➜  yii2-2.0.12 git:(master) ✗ ab -n 1000 -c 100 http://yii2-benchmark.dev/
This is ApacheBench, Version 2.3 <$Revision: 1757674 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking yii2-benchmark.dev (be patient)
Completed 100 requests
Completed 200 requests
Completed 300 requests
Completed 400 requests
Completed 500 requests
Completed 600 requests
Completed 700 requests
Completed 800 requests
Completed 900 requests
Completed 1000 requests
Finished 1000 requests


Server Software:        nginx/1.12.0
Server Hostname:        yii2-benchmark.dev
Server Port:            80

Document Path:          /
Document Length:        2 bytes

Concurrency Level:      100
Time taken for tests:   0.649 seconds
Complete requests:      1000
Failed requests:        0
Total transferred:      165000 bytes
HTML transferred:       2000 bytes
Requests per second:    1539.74 [#/sec] (mean)
Time per request:       64.946 [ms] (mean)
Time per request:       0.649 [ms] (mean, across all concurrent requests)
Transfer rate:          248.10 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   1.0      0       5
Processing:    16   62   9.2     61      96
Waiting:       16   62   9.2     61      96
Total:         21   62   9.2     61      98

Percentage of the requests served within a certain time (ms)
  50%     61
  66%     64
  75%     67
  80%     69
  90%     73
  95%     77
  98%     89
  99%     94
 100%     98 (longest request)
Tastphp version 1.3.6

run commands before test:

composer install --optimize-autoloader
php bin/console cache:config
php bin/console cache:route

➜  tastphp-1.3.6 git:(master) mv config/example.app.yml config/app.yml
➜  tastphp-1.3.6 git:(master) cat config/app.yml
version: v1.3.6
debug: false
secret: tastphp
# dev | test | prod
env: prod
timezone: UTC
name: tastphp

ab test result:

➜  tastphp-1.3.6 git:(master) ✗ ab -n 1000 -c 100 http://tastphp-benchmark.dev/
This is ApacheBench, Version 2.3 <$Revision: 1757674 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking tastphp-benchmark.dev (be patient)
Completed 100 requests
Completed 200 requests
Completed 300 requests
Completed 400 requests
Completed 500 requests
Completed 600 requests
Completed 700 requests
Completed 800 requests
Completed 900 requests
Completed 1000 requests
Finished 1000 requests


Server Software:        nginx/1.12.0
Server Hostname:        tastphp-benchmark.dev
Server Port:            80

Document Path:          /
Document Length:        2 bytes

Concurrency Level:      100
Time taken for tests:   0.487 seconds
Complete requests:      1000
Failed requests:        0
Total transferred:      165000 bytes
HTML transferred:       2000 bytes
Requests per second:    2051.92 [#/sec] (mean)
Time per request:       48.735 [ms] (mean)
Time per request:       0.487 [ms] (mean, across all concurrent requests)
Transfer rate:          330.63 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   0.8      0       4
Processing:     7   46   7.5     48      55
Waiting:        7   46   7.5     48      55
Total:         11   46   6.8     48      56

Percentage of the requests served within a certain time (ms)
  50%     48
  66%     49
  75%     50
  80%     51
  90%     52
  95%     53
  98%     54
  99%     55
 100%     56 (longest request)
广告时间 start 关注下:

?

tastphp 骨架: https://github.com/tastphp/ta...

tastphp 内核: https://github.com/tastphp/fr...

最近也在编写以实际项目来说明 tastphp 的简单优雅好用

中文文档: https://github.com/tastphp/ta...

欢迎 PR、issure 给我 你的 star,确实给我不小鼓励!让我坚持下去。祝国内产生更多优秀的开源产品!

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/30698.html

相关文章

  • 使用jMeter构造大量并发HTTP请求进行微服务性能测

    摘要:比如我开发好了一个微服务,想测试其在大并发请求下的性能表现如何。比较方便的一个做法是使用工具来构造这些请求。这个请求的意思是使用请求查询账号名称为的实例。维护完毕之后点执行按钮,会观察到个线程同时发出请求,并能看到每个请求的响应时间。 比如我开发好了一个微服务,想测试其在大并发请求下的性能表现如何。 比较方便的一个做法是使用工具jMeter来构造这些请求。 创建一个新的工程: show...

    LeanCloud 评论0 收藏0
  • node.js中文资料导航

    摘要:中文资料导航官网七牛镜像深入浅出系列进阶必读中文文档被误解的编写实战系列热门模块排行榜,方便找出你想要的模块多线程,真正的非阻塞浅析的类利用编写异步多线程的实例中与的区别管道拒绝服务漏洞高级编程业界新闻看如何评价他们的首次尝鲜程序员如何说服 node.js中文资料导航 Node.js HomePage Node官网七牛镜像 Infoq深入浅出Node.js系列(进阶必读) Nod...

    geekidentity 评论0 收藏0
  • 朋友当初选择测行业大家都嘲笑他,如今月薪17K实力打我的脸...

    摘要:我一个朋友就是选择性能测试如今几经月薪一什么是性能测试性能测试是指通过特定方式,对被测系统按照一定策略施加压力,获取系统响应时间吞吐量资源利用率等性能指标,以期保证生产系统的性能能够满足用户需求的过程。 ...

    acrazing 评论0 收藏0

发表评论

0条评论

aikin

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<