本文永久链接: https://github.com/xitu/gold-miner/blob/master/TODO/php-7-hhvm-benchmarks.md
每年我们都会在大量不同的平台上尝试并深入研究 PHP 不同版本以及 HHVM 在性能方面的差异而今年, 我们一鼓作气在 20 个不同的平台 / 配置下评测了四个不同版本的 PHP 引擎以及 HHVM, 测评使用的应用包括了 WordPress,Drupal,Joomla!,Laravel,Symfony 以及其他各种各样的应用此外, 我们也测试了近些年流行的一些电子商务解决方案如 WooCommerce,Easy Digital Downloads,Magento, 和 PrestaShop
想看这篇文章的西班牙语版本吗? 我是传送门
我们鼓励 WordPress 用户使用 PHP 的最新支持版本, 除了更好的安全性外, 它们还提供了额外的性能提升我们并不只是在谈论 WordPress, 这个结论对于大部分的平台也是适用的今天我们将向你展示 php7.2 是如何打败它面对的一切敌人的!
今年的测评结果相比起我们以前那些 HHVM 获胜的测评发生了大大的改变我们很高兴能看到 PHP7.2 成为目前速度最快的 PHP 引擎关于 WordPress, 有一个需要提及的重要事情, 那就是 HHVM 不再被支持并将会渐渐地淡出历史舞台, 我们不再鼓励我们的顾客迁移到 HHVM , 同时也声明在大量不同的平台上支持它并不是一个好的选择
对于开发者和终端用户来说这都是一个好消息, 因为这意味着我们将更多地关注 PHP, 并为每个人都提供更快的网站和 web 服务
PHP 和 HHVM 测评(2018)
对于每个测试, 我们都使用了每个平台系统的最新版本并在 15 个并发用户的条件下对主页跑了 1 分钟的测试, 下面是我们测试环境的具体细节
使用机器: 8 核 Intel(R) Xeon(R) CPU @ 2.20GHz (由 Google Cloud Platform 提供并运行于一个隔离的容器中)
操作系统: Ubuntu 16.04.3 LTS
Docker 栈: Debian 8, Nginx 1.13.8, MariaDB 10.1.31
PHP 引擎版本: 5.6, 7.0, 7.1, 7.2
HHVM 版本: 3.24.2
OPCache: 对于 WordPress, Joomla, 和 Drupal, 我们使用了官方的 Docker 镜像对于其他的评测应用, 我们使用了与 OPcache 相同的镜像配置 OPcache 应用了如下的 php.ini 推荐设置
- opcache.memory_consumption=128
- opcache.interned_strings_buffer=8
- opcache.max_accelerated_files=4000
- opcache.revalidate_freq=60
- opcache.fast_shutdown=1
- opcache.enable_cli=1
测试由 Thoriq Firdaus 执行, 他是一位 WordPress 代码贡献者以及工作于 Kinsta 的服务支持工程师他曾经为 WordPress 的核心部分和 WordPress Indonesia 的翻译编辑器贡献过代码
什么是 PHP?
PHP 的全称是超文本预处理器 (Hypertext Preprocessor) 它是目前 web 界最流行的脚本语言之一根据 W3Techs 的调查结果, 超过 83% 的网站使用 PHP 作为它们的服务器端编程语言
什么是 HHVM?
由于 PHP 的性能问题, Facebook 开发了 HipHop Virtual Machine(HHVM)它使用即时编译 (JIT) 技术来将 PHP 代码转换为机器语言, 从而在 PHP 代码和驱动代码的底层硬件之间建立协同关系
测试的平台和配置
我们的测试涵盖了如下 20 个平台 / 配置在一些平台上, 因为缺少某些特殊 PHP 版本的支持, 我们需要测试该平台多个版本的表现点击下面任意一个链接你可以直接跳转到该平台的测试信息以及结果数据以每秒的请求量进行衡量这个数值越大越好
- WordPress 4.9.4
- WordPress 4.9.4 + WooCommerce 3.3.1
- WordPress 4.94 + Easy Digital Downloads 2.8.18
- Drupal 8.4.4
- Joomla! 3.8.5
- Magento 2 (CE) 2.1.11 + 2.2.2
- Grav CMS 1.3.10
- October CMS 1.0.433
- Laravel 5.4.36 + 5.6
- Symfony 3.3.6 + 4.0.1
- PyroCMS 3.4.14
- Pagekit 1.0.13
- Bolt CMS 3.4.8
- AnchorCMS 0.12.6 (pre-release)
- PrestaShop 1.7.2.4
- CraftCMS 2.6.3011
- ForkCMS 5.2.2
- WordPress 4.9.4
我们测试的第一个平台, 理所当然应该是我们最喜欢的其中之一: WordPress(我们可能偏向于认为我们每天都在使用使用这个 CMS 系统 )从它的核心来看, WordPress 是一个你能用来建立精美的网站, 博客或者 App 的开源软件事实上, WordPress 驱动了互联网上超过 29% 的网站是的, 没错 你访问的每四个网站中就可能有超过一个是由 WordPress 驱动的
对于 WordPress 的测评, 我们选择了免费的 Twenty Seventeen 主题并使用了由 wptest.io 生成的测试内容, 通过 15 个并发用户对主页的访问测试了 1 分钟
文章数目: 由 wptest.io 生成, 10 篇 / 页
搜索是侧边栏唯一的菜单项目
Docker 镜像派生自 hub.docker.com/_/wordpress
WordPress 测试
测试结果
WordPress 4.9.4 PHP 5.6 测试结果: 49.18 req/sec
WordPress 4.9.4 PHP 7.0 测试结果: 133.55 req/sec
WordPress 4.9.4 PHP 7.1 测试结果: 134.24 req/sec
WordPress 4.9.4 PHP 7.2 测试结果: 148.80 req/sec
WordPress 4.9.4 HHVM 测试结果: 144.76 req/sec
PHP 7.2 成为了赢家, 证明其比 HHVM 略快这与 2016 年的基准相比有显著的变化, 因为在 2016 年, HHVM 显然是赢家 WordPress 的 PHP 也更加稳定在使用 HHVM 的过程中, 我们亲身经历了很多问题
WordPress 4.9.4 + WooCommerce 3.3.1
WooCommerce 是一个支持高度自定义, 使用 WordPress 搭建的开源电子商务平台它也是到目前为止, 最流行的电子商务解决方案之一, 驱动了互联网上超过 42% 的电子商务网站
对于接下来的这个测试, 我们选择了将 WordPress 与 WooCommerce 一起安装并选择了免费的 Storefront eCommerce 主题.
商品数目: 8 (每行两件商品)
将购物页面设置为首页
Docker 镜像派生自 hub.docker.com/_/wordpress
WordPress + WooCommerce 测试
测试结果
WordPress 4.9.4 + WooCommerce 3.3.1 PHP 5.6 测试结果: 34.47 req/sec
WordPress 4.9.4 + WooCommerce 3.3.1 PHP 7.0 测试结果: 84.89 req/sec
WordPress 4.9.4 + WooCommerce 3.3.1 PHP 7.1 测试结果: 86.04 req/sec
WordPress 4.9.4 + WooCommerce 3.3.1 PHP 7.2 测试结果: 92.60 req/sec
WordPress 4.9.4 + WooCommerce 3.3.1 HHVM 测试结果: 69.58 req/sec
WooCommerce 在使用 HHVM 的过程中遇到了一些小问题, 而 PHP 7.2 以微弱优势打败了 PHP 7.1
WordPress 4.9.4 + Easy Digital Downloads 2.8.18
Easy Digital Downloads (EDD), 这是一款由 Pippin Williamson 编写的, 专注于帮助使用者和开发者售卖电子商品的免费的 WordPress 电子商务插件
在了解清楚 WooCommerce 是怎么运作的之后, 我们采用了 WordPress 和 Easy Digital Downloads 一起安装的方式并使用了免费的 EDD Starter 主题
商品数目: 6 (从插件中获取的默认商品样例)
缺失的商品列表上有 2 张图片
Docker 镜像派生自 hub.docker.com/_/wordpress
WordPress + Easy Digital Downloads 测试
测试结果
WordPress 4.9.4 + EDD 2.8.18 PHP 5.6 测试结果: 76.71 req/sec
WordPress 4.9.4 + EDD 2.8.18 PHP 7.0 测试结果: 123.83 req/sec
WordPress 4.9.4 + EDD 2.8.18 PHP 7.1 测试结果: 124.82 req/sec
WordPress 4.9.4 + EDD 2.8.18 PHP 7.2 测试结果: 135.74 req/sec
WordPress 4.9.4 + EDD 2.8.18 HHVM 测试结果: 127.74 req/sec
PHP 7.2 在 WordPress 和 Easy Digital Downloads 的测试中, 毫无疑问地占据了主导地位
Drupal 8.4.4
Drupal 是一款开源的 CMS, 它以模块化的系统和强大的开发者社区而流行它最初于 2000 年上线, 根据 W3Techs 的数据, 它支持了互联网上 2.2% 的网站, 占据了 CMS 市场 4.4% 的份额
对于 Drupal 的测评, 我们使用了免费的 Bartik 8.4.4 主题值得注意的一点是 Drupal 8.4.x 并不兼容 PHP 7.2 (#2932574), 因此本次测试中并没有加入这个版本的 PHP 引擎
文章数目: 通过 Devel 模块生成了 10 篇
关闭了页缓存: www.drupal.org/node/259891
Docker 镜像派生自 hub.docker.com/_/drupal/
Drupal 测试
测试结果
Drupal 8.4.4 PHP 5.6 测试结果: 7.05 req/sec
Drupal 8.4.4 PHP 7.0 测试结果: 15.94 req/sec
Drupal 8.4.4 PHP 7.1 测试结果: 19.15 req/sec
Drupal 8.4.4 PHP 7.2 测试结果: (不支持的版本)
Drupal 8.4.4 HHVM 测试结果: 19.57 req/sec
因为 Drupal 的最新版本并不支持 PHP 7.2,HHVM 获得了最高的得分然而回顾前几个 PHP 版本的性能提升, 我们依然能够稳定推测出 PHP 7.2 可能会更加地快
Joomla! 3.8.5
对于 Joomla! 的测试, 我们使用了免费的 Beez3 模板
文章数目: 4 (在安装过程中添加的 Joomla 默认样例文章)
关闭默认侧边栏
Docker 镜像派生自 hub.docker.com/_/joomla/
Joomla! 测试
测试结果
Joomla! 3.8.5 PHP 5.6 测试结果: 26.42 req/sec
Joomla! 3.8.5 PHP 7.0 测试结果: 41.46 req/sec
Joomla! 3.8.5 PHP 7.1 测试结果: 41.17 req/sec
Joomla! 3.8.5 PHP 7.2 测试结果: 42.36 req/sec
Joomla! 3.8.5 HHVM 测试结果: 51.84 req/sec
在 Joomla! 的测试中, 我们可以看到 PHP 的每个版本都有一个稳定的提升, 但是 HHVM 依然成为了第一
Magento 2 (CE) 2.1.11 + 2.2.2
来源: https://juejin.im/post/5ab4bac9518825557b4caec6