PHP 7.4 早期性能基准测试:与 7.3 差不多

h4cd
 h4cd
发布于 2019年05月23日
收藏 4

PHP 7.4 目前正在积极开发中,准备添加到该版本的新特性包括短闭包、自定义对象序列化、FFI(Foreign Function Interface,外部函数接口)与扩展运算符等。

7.4 的首个 alpha 版本预计将于 6 月 6 日发布,而 beta 版本将从 7 月 18 日开始,如果一切顺利,PHP 7.4 正式版本将在 11 月底或 12 月初发布。

1 月份以来 PHP 7.4 已经开始在 Git 上分支,而 PHP 8.0 也开始在 master 上开发,国外科技媒体 Phoronix 针对从 Git 构建的 PHP 7.3.6、7.2.18、7.1.29、7.0.32、7.4 与 8.0 运行了一些快速基准测试,每个版本都以相同的方式构建,测试环境如下:

下边来看看结果:

PHPBench 显示 7.4 目前所处阶段(pre-alpha)的性能与 PHP 7.3 稳定版相当,并且已经比 PHP 7.0 的速度快了大约 30%。

上图微基准测试是数据越小性能越好,结果显示 PHP 7.4 比 PHP 7.3 略快,PHP 8.0 的性能也差不多,但是这里还没有考虑 8.0 开启 JIT 的情况。

在 Phoronix Test Suite 的内部 PHP 自我基准测试结果也显示,PHP 7.4 目前的 pre-alpha 状态下性能与 PHP 7.3 相当。

详情查看:

https://www.phoronix.com/scan.php?page=news_item&px=PHP-7.4-Early-Benchmark

本站文章除注明转载外,均为本站原创或编译。欢迎任何形式的转载,但请务必注明出处,尊重他人劳动共创开源社区。
转载请注明:文章转载自 OSCHINA 社区 [http://www.dbndka.com.cn]
本文标题:PHP 7.4 早期性能基准测试:与 7.3 差不多
加载中

精彩评论

eechen
eechen
PHP之后很难再有像PHP7那样大幅提升真实PHP Web应用性能的版本了.
PHP8的JIT也不过是提升了PHP计算上的性能,对传统PHP应用性能帮助不大.

PHP新特性JIT,FFI,preload的核心开发者都是俄罗斯人Dmitry Stogov.
其中JIT和FFI参考了LuaJIT的设计和实现,preload则参考了JVM的Class Data Sharing.

FFI不意味着更快,以bench.php中的ary3测试为例.
与访问本机PHP数组和对象相比,访问FFI数据结构要慢很多(大约2倍).
所以使用它们来提高速度是没有意义的.但可以减少内存消耗.
在解释模式下,所有其他语言类似的FFI实现都是如此.
不过LuaJIT在其JIT中为FFI提供了特殊支持,FFI性能反而更高.

PHP 7.4引入的opcache.preload可以有效提升PHP框架性能.
在服务器(PHP-FPM)启动时(在运行任何应用程序代码之前),
我们可以将一组特定的PHP文件加载到内存中,
并使其内容"永久可用"于该服务器的所有后续请求.
这些文件中定义的所有函数和类都可以用于开箱即用的请求,
与内部实体完全相同(例如函数strlen()或类exception).
这样,我们可以预加载整个或部分框架,甚至整个应用程序类库.

最新评论(14

李惟
李惟
希望能够加个asycn和await
wxpcjrjgcs
wxpcjrjgcs
还在用5.x
slince91
slince91

引用来自“南漂一卒”的评论

短闭包是 Lambda 表达式吗?
是的
高久峰是个大胖子

引用来自“eechen”的评论

PHP之后很难再有像PHP7那样大幅提升真实PHP Web应用性能的版本了.
PHP8的JIT也不过是提升了PHP计算上的性能,对传统PHP应用性能帮助不大.

PHP新特性JIT,FFI,preload的核心开发者都是俄罗斯人Dmitry Stogov.
其中JIT和FFI参考了LuaJIT的设计和实现,preload则参考了JVM的Class Data Sharing.

FFI不意味着更快,以bench.php中的ary3测试为例.
与访问本机PHP数组和对象相比,访问FFI数据结构要慢很多(大约2倍).
所以使用它们来提高速度是没有意义的.但可以减少内存消耗.
在解释模式下,所有其他语言类似的FFI实现都是如此.
不过LuaJIT在其JIT中为FFI提供了特殊支持,FFI性能反而更高.

PHP 7.4引入的opcache.preload可以有效提升PHP框架性能.
在服务器(PHP-FPM)启动时(在运行任何应用程序代码之前),
我们可以将一组特定的PHP文件加载到内存中,
并使其内容"永久可用"于该服务器的所有后续请求.
这些文件中定义的所有函数和类都可以用于开箱即用的请求,
与内部实体完全相同(例如函数strlen()或类exception).
这样,我们可以预加载整个或部分框架,甚至整个应用程序类库.

引用来自“phper08”的评论

也就是使用框架也可以达到原生PHP一样快了?

引用来自“久峰爱玩火”的评论

常驻后
觉得还是很理想 有了swoole preload优势在哪里
高久峰是个大胖子

引用来自“eechen”的评论

PHP之后很难再有像PHP7那样大幅提升真实PHP Web应用性能的版本了.
PHP8的JIT也不过是提升了PHP计算上的性能,对传统PHP应用性能帮助不大.

PHP新特性JIT,FFI,preload的核心开发者都是俄罗斯人Dmitry Stogov.
其中JIT和FFI参考了LuaJIT的设计和实现,preload则参考了JVM的Class Data Sharing.

FFI不意味着更快,以bench.php中的ary3测试为例.
与访问本机PHP数组和对象相比,访问FFI数据结构要慢很多(大约2倍).
所以使用它们来提高速度是没有意义的.但可以减少内存消耗.
在解释模式下,所有其他语言类似的FFI实现都是如此.
不过LuaJIT在其JIT中为FFI提供了特殊支持,FFI性能反而更高.

PHP 7.4引入的opcache.preload可以有效提升PHP框架性能.
在服务器(PHP-FPM)启动时(在运行任何应用程序代码之前),
我们可以将一组特定的PHP文件加载到内存中,
并使其内容"永久可用"于该服务器的所有后续请求.
这些文件中定义的所有函数和类都可以用于开箱即用的请求,
与内部实体完全相同(例如函数strlen()或类exception).
这样,我们可以预加载整个或部分框架,甚至整个应用程序类库.

引用来自“phper08”的评论

也就是使用框架也可以达到原生PHP一样快了?
常驻后
p
phper08
怎么做针对某个项目的preload?
布老虎
布老虎
框架常驻内存还是非常有用的,除了框架,还是框架的插件,通通扔到内存当中。
IdleMan
IdleMan
osc两个php“大咖”都来评论了,留影一下!
宏哥
宏哥

引用来自“回去干活”的评论

实时引擎这块,在服务端每秒15帧的循环,估计没几个人会用PHP来做吧。
用luajit
回去干活
回去干活
实时引擎这块,在服务端每秒15帧的循环,估计没几个人会用PHP来做吧。
返回顶部
顶部
天津时时彩