ThinkPHP胜出Laravel 近4倍,主流框架性能测试

澳门新葡亰娱乐在线 3

摘要:在一个基于Vagrant的本地环境中,可能是某个错误的原因,导致HHVM测试结果很差;在HHVM伙伴们协助下,该原因仍在研究中!然而,在DigitalOcean的一个4GB虚拟机中,HHVM甚至盖过了最新版的PHP-NG的风头!

主流PHP框架性能非权威测试

澳门新葡亰娱乐在线 1

作为一个PHP开发者,而且是初创企业团队的技术开发者,选择开发框架是个很艰难的事情。

结论:它们反映出HHVM的功效更佳(在JIT热启动后),虽然出于某些原因,我们不能在所有装备中获取这些结果。

用ThinkPHP的话,招聘一个刚从培训机构出来的开发者就可以上手了,但是性能和后期代码解耦是个让人头疼的事情。不过很多第三方功能不需要自己写,众多大牛已经给铺好路了。

如果你记得我们在几个月前写过一篇文章,那时WordPress
3.9表明是完全支持HHVM的,当时是那么令我们欢欣鼓舞。最初的基准测试结果显示,HHVM要比驱动着当前所有PHP构建的Zend引擎高级得多。后来,问题就出来了:

用Laravel的话,传说写起来很爽扩展性也够,但是学习成本有点高,总不能给初级开发者半个月的时间去学习框架吧。而且据说江湖人士透漏,Laravel性能不怎么样,文档也并不是特别丰富。

  • HHVM只能以单个用户运行,这意味着(在共享环境中)安全性差了
  • HHVM在崩溃后不会自动重启,而不幸的是,它至今仍然经常发生
  • HHVM在启动时使用大量内存,虽然,它和同规模的PHP-FPM比较,单个请求的内存使用量更低

用Yii的话,语法有点啰嗦,前后端代码分离有点小麻烦,不过性能是非常好的,而且已经有众多国内大公司在使用了,出现意外可以快速的找到大牛答疑解惑。

很显然,你不得不根据你的(或者更确切地说是你的站点)的需求采取折中方案,然而这值得吗?切换到HHVM后,你期望获得多少性能改善呢?

不如做个简单的性能评测,选个性能出色的总不会出错

在Kinsta,我们真的想要测试所有新技术,并通常会优化这一切来为我们的客户提供最佳的环境。今天,我最终花了点时间来配置测试环境并进行了一些测试来对比两个不同的构建,一个是全新出炉的WordPress安装,另外一个则添加了大量内容的WooCommerce!为了计量脚本的运行时间,我只是简单地添加了

性能测试

<?php timer_stop(1); ?>

测试时间: 2016年05月06日

这一行到footer.php的/body标记前。

测试工具: siege (因为MAC系统的ab总是会出现 pr_socket_recv: Connection
reset by peer (54) 的错误,所以选择了siege)

这里是配置环境的详情:

测试机器: MacPro Core i5 处理器/8GB内存/256GB SSD闪存

  • DigitalOcean 4GB 雨滴容器 (2 CPU核心, 4GB RAM)
  • Ubuntu 14.04, MariaDB10
  • 测试站点: 已导入演示内容的Munditia主题,WooCommerce 2.1.12 &
    WordPress 3.9.1
  • PHP 5.5.9, PHP 5.5.15, PHP 5.6.0 RC2, PHP-NG
    (20140718-git-6cc487d)和HHVM 3.2.0 (版本是PHP 5.6.99-hhvm)

测试环境: Apache PHP5.6

没有进一步大费周章,这些就是我的测试结果,数值越低越好,以秒为单位:

框架版本: ThinkPHP 3.2.3 Laravel 5.2 Yii2.0.5

DigitalOcean 4GB 雨滴容器

单位是秒,运行10次,越低越好

澳门新葡亰娱乐在线 2

看起来似乎PHP-NG在它首次运行后就获得了峰值性能!HHVM需要更多几次重载,但是它们的性能貌似差不多!我等不及PHP-NG合并到开发主干了!:)

一分钟命中数,越高越好。

澳门新葡亰娱乐在线 3

PHP 5.5.15禁用OpCache

  • 执行: 236 hits
  • 可用性: 100.00 %
  • 消耗时间: 59.03 secs
  • 传输的数据: 2.40 MB
  • 回应时间: 2.47 secs
  • 执行率: 4.00 trans/sec
  • 吞吐量: 0.04 MB/sec
  • 并发数: 9.87
  • 成功的执行: 236
  • 失败的执行: 0
  • 最长执行: 4.44
  • 最短执行: 0.48

PHP 5.5.15启用OpCache

  • 执行: 441 hits
  • 可用性: 100.00 %
  • 消耗时间: 59.55 secs
  • 传输的数据: 4.48 MB
  • 回应时间: 1.34 secs
  • 执行率: 7.41 trans/sec
  • 吞吐量: 0.08 MB/sec
  • 并发数: 9.91
  • 成功的执行: 441
  • 失败的执行: 0
  • 最长执行: 2.19
  • 最短执行: 0.64

PHP 5.6 RC2禁用OpCache

  • 执行: 207 hits
  • 可用性: 100.00 %
  • 消耗时间: 59.87 secs
  • 传输的数据: 2.10 MB
  • 回应时间: 2.80 secs
  • 执行率: 3.46 trans/sec
  • 吞吐量: 0.04 MB/sec
  • 并发数: 9.68
  • 成功的执行: 207
  • 失败的执行: 0
  • 最长执行: 3.65
  • 最短执行: 0.54

PHP 5.6 RC2启用OpCache

  • 执行: 412 hits
  • 可用性: 100.00 %
  • 消耗时间: 59.03 secs
  • 传输的数据: 4.18 MB
  • 回应时间: 1.42 secs
  • 执行率: 6.98 trans/sec
  • 吞吐量: 0.07 MB/sec
  • 并发数: 9.88
  • 成功的执行: 412
  • 失败的执行: 0
  • 最长执行: 1.93
  • 最短执行: 0.34

HHVM 3.2.0(版本是PHP 5.6.99-hhvm)

  • 执行: 955 hits
  • 可用性: 100.00 %
  • 消耗时间: 59.69 secs
  • 传输的数据: 9.18 MB
  • 回应时间: 0.62 secs
  • 执行率: 16.00 trans/sec
  • 吞吐量: 0.15 MB/sec
  • 并发数: 9.94
  • 成功的执行: 955
  • 失败的执行: 0
  • 最长执行: 0.85
  • 最短执行: 0.23

PHP-NG启用OpCache(构建: Jul 29 2014)

  • 执行: 849 hits
  • 可用性: 100.00 %
  • 消耗时间: 59.88 secs
  • 传输的数据: 8.63 MB
  • 回应时间: 0.70 secs
  • 执行率: 14.18 trans/sec
  • 吞吐量: 0.14 MB/sec
  • 并发数: 9.94
  • 成功的执行: 849
  • 失败的执行: 0
  • 最长执行: 1.06
  • 最短执行: 0.13

注意:这里节略了前一次的测试结果(有误),如感兴趣请访问原文查看。

测试原则: 每次测试循环5次,取中等数据

补充说明:所有项目都是让在子目录中

结果说明

Transactions: 2119 hits 处理请求总数量

Availability: 96.85 % 可用性

Elapsed time: 9.74 secs 运行时间

Data transferred: 1.31 MB 数据传输量

Response time: 0.60 secs 响应时间

澳门新葡亰娱乐在线,Transaction rate: 217.56 trans/sec 每秒处理效率

Throughput: 0.13 MB/sec 每秒处理数据

Concurrency: 130.28 并发

Successful transactions: 2162 成功的请求

Failed transactions: 69 失败的请求

Longest transaction: 2.85 最长的单个请求

Shortest transaction: 0.01 最短的单个请求

开始测试

增加一个控制器,并在控制器中输入10000次HelloWorld

并发50循环10次:

首先向我们走来的是ThinkPHP,看上去还行

Transactions: 500 hits

Availability: 100.00 %

Elapsed time: 2.81 secs

Data transferred: 52.45 MB

Response time: 0.26 secs

Transaction rate: 177.94 trans/sec

Throughput: 18.67 MB/sec

Concurrency: 47.10

Successful transactions: 500

Failed transactions: 0

Longest transaction: 0.48

Shortest transaction: 0.03

然后是Laravle,嗯,略微有些失望

Transactions: 500 hits

Availability: 100.00 %

Elapsed time: 13.33 secs

Data transferred: 52.45 MB

Response time: 1.27 secs

Transaction rate: 37.51 trans/sec

Throughput: 3.93 MB/sec

Concurrency: 47.55

Successful transactions: 500

Failed transactions: 0

Longest transaction: 3.64

Shortest transaction: 0.07

最后赛前比较看好的Yii

Transactions: 500 hits

Availability: 100.00 %

Elapsed time: 4.84 secs

Data transferred: 52.45 MB

Response time: 0.46 secs

Transaction rate: 103.31 trans/sec

Throughput: 10.84 MB/sec

Concurrency: 47.65

Successful transactions: 500

Failed transactions: 0

Longest transaction: 0.88

Shortest transaction: 0.04

并发200循环10次:

首先是ThinkPHP

Transactions: 1977 hits

Availability: 98.85 %

Elapsed time: 10.03 secs

Data transferred: 207.40 MB

Response time: 0.95 secs

Transaction rate: 197.11 trans/sec

Throughput: 20.68 MB/sec

Concurrency: 187.68

Successful transactions: 1977

Failed transactions: 23

Longest transaction: 1.22

Shortest transaction: 0.02

然后是Laravel

Transactions: 1890 hits

Availability: 94.50 %

Elapsed time: 51.85 secs

Data transferred: 198.27 MB

Response time: 4.88 secs

Transaction rate: 36.45 trans/sec

Throughput: 3.82 MB/sec

Concurrency: 178.00

发表评论

电子邮件地址不会被公开。 必填项已用*标注

相关文章

网站地图xml地图