php 框架效率测试,2017 非标准 PHP 框架性能测试比较

我最近在给tastphp 完善说明文档 有一节是性能测试比较 ,才有了下面这个项目,有什么说的不对的地方,大家给我指正。一起交流才有进步!

针对 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

各个框架的版本

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

测试结果

6d95b424d8b666c68c782a11dd7843c5.png

Detail

Laravel ab test

Laravel version 5.5.0

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

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

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

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

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

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

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

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 的简单优雅好用

欢迎 PR、issure 给我

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值