php 是最流行的用于 web 开发的脚本语言之一。php 的新版本,php 7 在性能上做了很大的优化。不过,php 还有一个竞争对手 hhvm (hiphop virtual machine) — 一个运行 php 代码的虚拟工具。二者直接的比较正在升温,那么让我们来看一下他们直接的性能对比吧。
什么是 hhvm?
在2008年,facebook 启动了一项工作,计划开发一个工具 将 php 脚本转换成 c++,这样就可以被编译后在 web服务器上运行。目的是节省服务器资源,这是一个很重要的目标,因为 facebook的用户量正在较快增长。从这个意义上讲,这个项目是成功的,因为它可以让服务器处理之前五到六倍的请求量。
时间回到2010年,facebook 的服务器需求已经增加了很多,是时候考虑用新的创新来提升更大的效率。基于这个需求,facebook 开发了hhvm。
hhvm 使用了 just-in-time (jit) 编译方式将 php代码转换成某种字节码。接下来把字节码再转换成机器码并进行优化,让它尽可能快的运行。
什么是php 7?
php 7 是 php 社区对 hhvm 的回应。php 7 发布的预览版本号称比之前的 php 5 的性能要提升90%。
你可能会问 php 的版本直接从 php5 跳到了 php7,答案是这样的:php6 的开发开始于2005年,但是它的进展过于缓慢又出现了很多的问题,这样php6 在它还没有发布正式版本之前就有了不好的名声。所以php社区决定给这个语言的新版本直接命名为 php7。
真正的问题不是 php5 和 php7 之间的比较,因为已经很明显了, php7 提供了更快的运行速度。但是我们想比较的是 php7 和hhvm。很多专家已经分别使用了这两个方法来处理php代码,并且揭示了一些有趣的结论。
比较 php7 和 hhvm 的异同:
在回答哪个更好之前,让我们先来看一下他们之间的关键不同点和相似之处。
代码解析:php7 和 hhvm 之间的基本不同之处在于他们解析 php 代码的方式。php7 使用标准的 php解析器,它是一个可以给所有人使用的免费软件,可以在服务器上直接解析和运行。它生成 html 代码,然后发送给客户端,客户端显示出用户期望的内容。
相比之下,hhvm 首先把 php 代码转化为 hiphop 字节代码,这个代码再被翻译成机器码然后执行。在这个过程中 hhvm会对代码进行优化,优化一些影响执行效率的 php 代码,目标是提高运行速度。
编写代码php 解析器和 hhvm 都可以接受 php 代码然后运行。这样写代码的过程是完全一样的。但是如果你想使用 hhvm,你需要在你的服务器上安装hhvm, 然后以命令行的方式通过 hhvm 命令来调用。
性能测试:
hhvm 比之前的 php 版本能提供更快的性能。但是最近的性能测试认为至少在某些情况下 php7 是比 hhvm 稍微快些。让我们来看一下由kinsta 来做的性能测试结果:
wordpress:运行在wordpress 4.1.1的 php7 每秒钟比 php5.6 能执行超过两倍的请求,但是没有 hhvm3.6.1提供的多,在测试中 hhvm 每秒钟执行624个请求而 php7 只执行604个。
drupal:php7 可以给 drupal 用户提供比 hhvm 更加明显的优势。php7 在 drupal8 上的处理响应效率比 hhvm高出超过37个百分点。
哪些公司使用 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次,服务器的响应时间就会急剧增加。
未来php7和hhvm何去何从?
php7 稳定版将发布于 2015年11月。因此,公司尚未使用新的语言,但 php7测试版的性能有希望的基准测试结果可以吸引更多的公司使用新版本。
未来是 php7 的时代,那 hhvm 呢?很遗憾,它是离死不远了。虽然现在许多企业已经在使用 hhvm增加在其网站上的表现。 但是 php 和 hhvm之间的过渡不是瞬间就能完成的。etsy(一个网络商店平台)花了的半年多时间来完成过渡。在和 php7 相比,hhvm 暂时只有很轻微的速度好处,企业会急着切换回php。
facebook 正在继续开发 hhvm。它最近宣布了对 mac os x 的支持,使该技术让苹果开发者便于使用。 hhvm 开发商相信他们的 hhvm仍比 php7 快,在很多情况下,包括与 wordpress。
为什么 hhvm 和 php 7 对于网店老板存在竞争关系?
作为一个网店老板,你需要根据你的网店所在的平台决定是否使用 php7 或 hhvm。如果你的网站是用 worldpress创建的,那么你可以看看新版本的 hhvm 和 php 7的基准测试结果,从测试结果可以发现两者在性能上的差异,然后你就可以选择解决方案,较大限度地减小页面加载时间,服务器响应时间和 cpu 使用率。
选择 hhvm 的原因hhvm 使用动态翻译技术,在大多数情况下(包括wordpress)可以提供更高的性能。
hhvm 在处理大量请求时,可以保证每个请求只使用少量的内存。
hhvm 开发者正在稳步增加这个引擎所能运行的 php 代码的数量,它已经可以运行新版本的 worldpress,以及其他常见的 php框架和应用。
hhvm 是开源的,尽管 hhvm 是 facebook 开发的,但它是开源的,意味着任何人都可以使用和修改它的源码。
选择 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 都更有益。作出决定,尽快将你的网站切换到新的系统。
http://www.shanghaixdl.com/php/
http://www.shanghaixdl.com/content-55-87-1.html
http://www.shanghaixdl.com/content-55-86-1.html