PHP 7 vs HHVM 比较 已翻译 100%

oschina 投递于 2015/10/10 11:59 (共 9 段, 翻译完成于 10-12)
阅读 21266
收藏 55
4
加载中

PHP 是最流行的用于 web 开发的脚本语言之一。PHP 的最新版本,PHP 7 在性能上做了很大的优化。不过,PHP 还有一个竞争对手 HHVM (HipHop Virtual Machine) — 一个运行 PHP 代码的虚拟工具。二者直接的比较正在升温,那么让我们来看一下他们直接的性能对比吧。

什么是 HHVM?

2008年,Facebook 启动了一项工作,计划开发一个工具 将 PHP 脚本转换成 C++,这样就可以被编译后在 web 服务器上运行。目的是节省服务器资源,这是一个很重要的目标,因为 Facebook 的用户量正在快速增长。从这个意义上讲,这个项目是成功的,因为它可以让服务器处理之前五到六倍的请求量。

zicode
zicode
翻译于 2015/10/10 16:08
5

时间回到2010年,Facebook 的服务器需求已经增加了很多,是时候考虑用新的创新来提升更大的效率。基于这个需求,Facebook 开发了 HHVM。

HHVM 使用了 Just-In-Time (JIT) 编译方式将 PHP 代码转换成某种字节码。接下来把字节码再转换成机器码并进行优化,让它尽可能快的运行。

什么是PHP 7?

PHP 7 是 PHP 社区对 HHVM 的回应。PHP 7 发布的预览版本号称比之前的 PHP 5 的性能要提升100%

zicode
zicode
翻译于 2015/10/10 16:26
2

你可能会问 PHP 的版本直接从 PHP5 跳到了 PHP7,答案是这样的:PHP6 的开发开始于2005年,但是它的进展过于缓慢又出现了很多的问题,这样 PHP6 在它还没有发布正式版本之前就有了不好的名声。所以PHP社区决定给这个语言的新版本直接命名为 PHP7。

真正的问题不是 PHP5 和 PHP7 之间的比较,因为已经很明显了 PHP7 提供了更快速的运行速度。但是我们想比较的是 PHP7 和 HHVM。很多专家已经分别使用了这两个方法来处理PHP代码,并且揭示了一些有趣的结论。

josephyu
josephyu
翻译于 2015/10/10 16:42
2

比较 PHP7 和 HHVM 的异同:

在回答哪个更好之前,让我们先来看一下他们之间的关键不同点和相似之处。

代码解析:

PHP7 和 HHVM 之间的基本不同之处在于他们解析 PHP 代码的方式。PHP7 使用标准的 PHP 解析器,它是一个可以给所有人使用的免费软件,可以在服务器上直接解析和运行。它生成 HTML 代码,然后发送给客户端,客户端显示出用户期望的内容。

相比之下,HHVM 首先把 PHP 代码转化为 HipHop 字节代码,这个代码再被翻译成机器码然后执行。在这个过程中 HHVM 会对代码进行优化,优化一些影响执行效率的 PHP 代码,目标是提高运行速度。

josephyu
josephyu
翻译于 2015/10/10 16:58
1

编写代码

PHP 解析器和 HHVM 都可以接收 PHP 代码然后运行。这样写代码的过程是完全一样的。但是如果你想使用 HHVM,你需要在你的服务器上安装 HHVM 然后以命令行的方式通过 HHVM 命令来调用。

性能测试:

HHVM 比之前的 PHP 版本能提供更快速的性能。但是最近的性能测试认为至少在某些情况下 PHP7 是比 HHVM 稍微快些。让我们来看一下由 Kinsta 来做的性能测试结果:

  • WordPress:运行在WordPress4.1.1的 PHP7 每秒钟比 PHP5.6 能执行超过两倍的请求,但是没有 HHVM3.6.1 提供的多,在测试中 HHVM 每秒钟执行624个请求而 PHP7 只执行604个。

  • Drupal:PHP7 可以给 Drupal 用户提供比 HHVM 更加明显的优势。PHP7 在 Drupal8 上的处理响应效率比 HHVM 高出超过37个百分点。

josephyu
josephyu
翻译于 2015/10/10 18:18
2

那些公司使用 HHVM?


除了开发出 HHVM 的 FaceBook 公司外,还有很多其他公司也采用了这个方案,在服务器上用 HHVM 运行 PHP 应用,包括 Wikimedia 和电子商务网站 Etsy。

  • Wikimedia:Wikimedia 拥有大量的教育内容,包括著名的在线百科全书维基百科。维基百科每 个月吸引着近五亿的互联网用户,为了满足这样高级的需求,需要优化服务器的性能,和 PHP相比 HHVM 有一个显著的优点,它可以同时加载多个 SPU 核心, 而 PHP 是单线程语言,不能被并行化。维基百科部署了 HHVM 后,CPU 的负载从50%降到了10%,用户提交编辑时的平均响应时间减少到原来的一半,页面的平均加载时间从原来的1.3秒降到了0.9秒。


  •  Etsy: 拥有五千四百万用户的 Tesy 同样迫切需要提高服务器性能,Etsy 的工程师对比了HHVM 和 PHP5.4 的性能,发现 HHVM 每秒可以处理280个服务器请求,而对于 PHP5.4,如果每秒的请求数超过了190次,服务器的响应时间就会急剧增加。




l
lxw1
翻译于 2015/10/10 21:27
1

未来PHP7和HHVM何去何从?

PHP7 稳定版将发布于 2015年11月。因此,公司尚未使用新的语言,但 PHP7 测试版的性能有希望的基准测试结果可以吸引更多的公司使用新版本。

未来是 PHP7 的时代,那 HHVM 呢?很遗憾,它是离死不远了。虽然现在许多企业已经在使用 HHVM增加在其网站上的表现。  但是 PHP 和 HHVM 之间的过渡不是瞬间就能完成的。Etsy(一个网络商店平台)花了的半年多时间来完成过渡。在和 PHP7 相比,HHVM 暂时只有很轻微的速度好处,企业会急着切换回 PHP。

Facebook 正在继续开发 HHVM。它最近宣布了对 Mac OS X 的支持,使该技术让苹果开发者便于使用。 HHVM 开发商相信他们的 HHVM 仍比 PHP7 快,在很多情况下,包括与 WordPress。

80000
80000
翻译于 2015/10/10 22:04
1

为什么 HHVM 和 PHP 7 对于网店老板存在竞争关系?

作为一个网店老板,你需要根据你的网店所在的平台决定是否使用 PHP7 或 HHVM。如果你的网站是用 WorldPress 创建的,那么你可以看看最新版本的 HHVM 和 PHP 7 的基准测试结果,从测试结果可以发现两者在性能上的差异,然后你就可以选择解决方案,最大限度地减小页面加载时间,服务器响应时间和 CPU 使用率。

选择 HHVM 的原因

  • HHVM 使用动态翻译技术,在大多数情况下(包括WordPress)可以提供更高的性能。

  • HHVM 在处理大量请求时,可以保证每个请求只使用少量的内存。

  • HHVM 开发者正在稳步增加这个引擎所能运行的 PHP 代码的数量,它已经可以运行最新版本的 WorldPress,以及其他常见的 PHP 框架和应用。

  • HHVM 是开源的,尽管 HHVM 是 Facebook 开发的,但它是开源的,意味着任何人都可以使用和修改它的源码。


l
lxw1
翻译于 2015/10/11 18:52
1

选择 PHP 7 的理由


  • PHP 7 在某些情况下比 HHVM 更快,包括运行 Drupal 8。 


  •  使用 PHP 7 不需要安装设置 HHVM。 


  • 尽管很多 PHP 4 的功能在新版本中不再支持,但用 PHP 5 写的代码在转换到 PHP 7 后将会如预期一样工作。

  • PHP 7 由 PHP 社区开发,这是一群开发稳定可靠 PHP 版本久负盛名的人。 


HHVM vs. PHP 7: 作出你的选择

不要犹豫太久,Kinsta 建议那些在线的网站尽量在 PHP 7 与 HHVM 之间作出选择,早点开始实施解决方案,让你的网站性能得到优化。一个低效的网站也会让你的声誉受损,那将很难挽回。
相对于旧版本的 PHP,HHVM and PHP 7 都更有益。作出决定,尽快将你的网站切换到新的系统。


ChappaKo
ChappaKo
翻译于 2015/10/10 16:39
1
本文中的所有译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接。
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。
加载中

评论(53)

yambo
yambo
支持php7,感觉hhvm有点耍小聪明
轻歌
轻歌
為毛我想起了迅雷5跳到迅雷7的事……
s
silver-申
真不错!!
阿水plus
阿水plus

引用来自“剑心”的评论

这有毛线好比较的,7出来hhvm必死无疑
+1024
Adam_OuYang
Adam_OuYang
太優秀了!
剑心
剑心
这有毛线好比较的,7出来hhvm必死无疑
walkskyer
walkskyer

引用来自“润群”的评论

是时候该大喊一句了
php是世界上最好的语言没有之一!哈哈……
宏哥
宏哥

引用来自“封心”的评论

没用过hhvm,谁给科普一下,从hhvm换到php 或者从php换到hhvm 很费事吗?

引用来自“eechen”的评论

HHVM是一个包含多个线程的单进程服务,它不像PHP-FPM有1个主进程和多个工作进程(Nginx也是这种进程模型),也就是说HHVM因为线程问题发生崩溃或僵死时无法自动恢复,而PHP-FPM的主进程却可以重启工作进程. 百度转HHVM遇到的问题:崩溃/内存泄露/兼容性/死锁/性能(JIT热身/没有触发JIT). http://lamp.baidu.com/2014/11/04/hhvm-in-baidu/

引用来自“宏哥”的评论

你这么空, 能不能帮忙把 bcompiler 升级一下,支持php5.6以及以上版本

引用来自“Risol”的评论

宏哥你最可爱了, 哈哈哈哈哈哈

引用来自“春天花不开”的评论

哈哈

引用来自“隐形人”的评论

bcompiler是什么
是php的编译器, 把php编译成bycode, 和python, lua的bycode想类似
kinosang
kinosang
为什么 HHVM 和 PHP 7 对于网店老板存在竞争关系?

这一节,我总感觉是把 Website 当做 Webstore 翻译了……
eechen
eechen

引用来自“隐形人”的评论

php7 相比较php5 为何性能会提升将近一倍 这是我好奇的地方
PHP7并没有引入JIT,PHP7的性能提升在于采用了更好的内存结构,比如在栈上为zval分配内存取代PHP5在堆上分配, 直接操作zval取代PHP5用(二级)指针操作,减少了内存分配循环. PHP7执行WordPress使用的CPU指令数约为PHP5的1/4,计算密集型的bench.php的CPU指令数也能减少一半以上. http://rango.swoole.com/archives/440
返回顶部
顶部