Press "Enter" to skip to content

PHP7 VS HHVM (WordPress)

其实我已经在很多场合说过, PHP7的性能已经和HHVM相当了..

但是呢, 总是有人问…

另外感觉微博并不能特别好的留存, 所以我写个BLOG吧.

这篇BLOG, 我将进行最客观的对比测试, 就用ab来压测一下Wordpress的首页..

来对比看看PHP7和HHVM-3.2.0的性能在Wordpress上的性能对比.

机器配置:

CPU: 4 X Intel(R) Xeon(R) CPU           E5410  @ 2.33GHz
Mem: 16G

环境配置:

Nginx + PHP-FPM
Nginx + HHVM

软件版本:

PHP7 - 79354ba6d0d6a1a4596f9ac66ee9bc3a34ed972b
HHVM-3.2.0

HHVM的配置:

$ cat /etc/hhvm/server.ini
; php options

pid = /var/run/hhvm/pid

; hhvm specific

hhvm.server.host = 127.0.0.1
hhvm.server.port = 9000
hhvm.server.type = fastcgi
;hhvm.server.file_socket = /var/run/hhvm/hhvm.sock
hhvm.server.default_document = index.php
hhvm.log.level = Error
hhvm.log.always_log_unhandled_exceptions = true
hhvm.log.runtime_error_reporting_level = 8191
hhvm.log.use_log_file = true
hhvm.log.file = /var/run/hhvm/error.log
hhvm.repo.central.path = /var/run/hhvm/hhvm.hhbc
hhvm.mysql.typed_results = false

PHP的配置(pm.max_children和你的cpu核数相当):

php-fpm.conf:
pm = static
pm.max_children = 4

php.ini (opcache):
zend_extension=opcache.so
opcache.enable=1
opcache.enable_cli=1

opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
opcache.revalidate_freq=60
opcache.save_comments=0
opcache.fast_shutdown=1
opcache.enable_file_override=1

为了显示测试的客观性, 我决定采用屏幕录制的办法, 我会把我测试的时候的过程录制下来. 大家参看即可..

视频:

测试结果如下(俩个测试都会首先用100个请求预热, 然后开始100个并发, 10000个请求ab压测):

PHP7:

Concurrency Level:      100
Time taken for tests:   38.726 seconds
Complete requests:      10000
Failed requests:        0
Write errors:           0
Total transferred:      89290000 bytes
HTML transferred:       86900000 bytes
Requests per second:    258.22 [#/sec] (mean)
Time per request:       387.260 [ms] (mean)
Time per request:       3.873 [ms] (mean, across all concurrent requests)
Transfer rate:          2251.64 [Kbytes/sec] received

HHVM-3.2

Document Path:          /wordpress/
Document Length:        8690 bytes

Concurrency Level:      100
Time taken for tests:   43.296 seconds
Complete requests:      10000
Failed requests:        0
Write errors:           0
Total transferred:      89260000 bytes
HTML transferred:       86900000 bytes
Requests per second:    230.97 [#/sec] (mean)
Time per request:       432.957 [ms] (mean)
Time per request:       4.330 [ms] (mean, across all concurrent requests)
Transfer rate:          2013.31 [Kbytes/sec] received

结论,

PHP7 – 258.22 QPS

HHVM – 230.97 QPS

PHP7的在真实场景的性能确实已经和HHVM相当, 在一些场景甚至超过了HHVM(PS: 我是想基于HHVM-3.3测试, 但是我的Ubuntu 13.10实在是编译不成功, 所以拿3.2测试, 他们的差别也不会太大).

最后, PHP7将会在明年10月发布正式版, 我相信我们还会让它更快, 大家拭目以待吧 🙂

PS: 我之所以发这个文章, 还有一个原因, 是因为某公司发表了一系列的文章来谈他们迁移HHVM. 其中有一这么一段, 是他们发现业务在PHP5.5(注意还不是7哦)和HHVM之间并没有他们期望的大的性能区别, 于是他们针对HHVM和PHP5.5分别做了优化以后, 再来对比, 得出一个”通用结论”.

那么问题就来了, 这就相当于是用HHVM写了个功能,然后用PHP又写了一个功能, 这俩者代码不完全相同, 逻辑不完全相同, 你能用这个对比来做出一个”通用结论”么?

因为, 你针对PHP的优化, 到底做了多少, 做的好不好, 很难评价, 也许换个人做优化, 还能得出完全相反的结论(就比如, 我们基于PHP5.4, 也做了一些优化, 让微博手机服务端的性能提升了2.6倍, 服务器减少了60%, 这又怎么说: 优化介绍: 微博LAMP性能优化之路)?

那个文章还有这么一句:”hhvm是基于php5.4的语法标准,因此,hhvm和php5.5与我们目前用的php5.2都存在语法差异,php5.5差异更大一些。”

这个叫做差异? 5.5对5.2那可是99%的兼容… 你把HHVM的不兼容点和PHP5.5的新语法都叫做差异? 那是一回事么?

79 Comments

  1. flash866
    flash866 2015-01-09

    “另外它采用JIT, 那么意味着, 重启以后要预热, 没有预热的情况下, 性能较为糟糕。”—-完全看不懂啊!!什么是“预热”??鸟哥普及一下吧、

  2. liuxd
    liuxd 2015-01-06

    额,直接PHP7了,而且明年10月份就发布。。。
    意识是PHP6被跳过了?

  3. eechen
    eechen 2015-01-04

    http://www.cnblogs.com/hxdoit/p/4155436.html
    php-fpm正在生成页面时,浏览器刷新后,php-fpm并不会退出.浏览器关闭请求后,nginx会通知到php-fpm,但php-fpm忽略了这个通知,继续处理,直到发送处理结果时,才知道了连接已经被关闭.我想在这里,php-fpm在连接的处理上是不是还存在可以优化的空间,也就是nginx通知php-fpm连接结束时,php-fpm应该退出而不是继续执行.

  4. 新一
    新一 2014-12-21

    真心希望早点发布。这样子我们可以应用了。

  5. Fwolf
    Fwolf 2014-12-20

    5.4 都还没完全普及,7 就要出了啊。。。好快,
    估计到时候直接把 6 跳过去?

  6. kn007
    kn007 2014-12-19

    明年10月,如果能再早就好了!

  7. Winsen
    Winsen 2014-12-19

    看得出来,鸟哥很火大…………

  8. chenjie
    chenjie 2014-12-19

    支持,期待7。评测就应该像鸟哥这样很客观

  9. ohmygirl
    ohmygirl 2014-12-19

    鸟哥好久不写博客了,微博上几次留言的问题也没有回复。

  10. skyforce
    skyforce 2014-12-19

    期待 PHP 7 的到来,向鸟哥努力学习!

  11. alan
    alan 2014-12-18

    别再黑我大PHP了

  12. 1
    1 2014-12-18

    顶 php是最好的语言

  13. doubear
    doubear 2014-12-18

    PHP一定会是世界上最好的语言,我认真的!!

  14. 叫我康哥
    叫我康哥 2014-12-18

    我只想知道到时候我从5.4升级到7会不会出很多bug

  15. moxian
    moxian 2014-12-18

    php是最好的语言!
    别再黑我大PHP了!
    期待PHP!

  16. moxian
    moxian 2014-12-18

    别在黑我大PHP了!
    期待php7

  17. king
    king 2014-12-18

    HHVM在处理静态内容方面变现很差
    期待PHP7

  18. mot
    mot 2014-12-18

    PHP7的正式版向下兼容5.3+吗

  19. Anonymous
    Anonymous 2014-12-18

    更加爱python和scala 哈哈哈哈哈。目前在用java = =!

  20. westup
    westup 2014-12-18

    php必须是最好的语言,我认真地

  21. jan
    jan 2014-12-18

    php是世界上最好的语言

  22. Anonymous
    Anonymous 2014-12-18

    顶 php是最好的语言

  23. star001007
    star001007 2014-12-18

    别在黑我大PHP了

  24. 花生
    花生 2014-12-18

    赞一个,别再黑我大PHP了。。哈哈

  25. Monster
    Monster 2014-12-18

    都在努力提升性能,求不黑php!@xxx?

  26. cheungzee
    cheungzee 2014-12-18

    php是最好的语言

  27. oboodo
    oboodo 2014-12-18

    板凳

  28. barbery
    barbery 2014-12-18

    大赞…非常期待PHP7啊啊啊啊

  29. foyon
    foyon 2014-12-18

    顶鸟哥

  30. walu
    walu 2014-12-18

    这发博客频率也太低了…哈哈

Leave a Reply

Your email address will not be published. Required fields are marked *