PHP7.0 新特性

变量类型

PHP7版本函数的参数和返回值增加了类型限定。

为什么PHP要加入类型呢?实际上此项特性是为了PHP7.1版本的JIT特性做准备,增加类型后PHP Jit可以准确判断变量类型,生成最佳的机器指令。

(针对密集运算的优化)

使用示例

错误异常

在过去,PHP程序出错之后Zend引擎会发生致命错误并终止程序运行,PHP7可以使用捕获错误。

PHP7的性能优化

zval使用栈内存

在Zend引擎和扩展中,经常要创建一个PHP的变量,底层就是一个zval指针。

之前的版本都是通过动态的从堆上分配一个zval内存,而PHP7可以直接使用栈内存。

好处:节省分配内存的花销

底层代码

zend_string存储hash值,array查询不再需要重复计算hash

PHP7为字符串单独创建了新类型叫做,除了指针和长度之外,

增加了一个hash字段,用于保存字符串的hash值。

数组的键值查找不需要反复计算hash值。

桶内直接存数据,减少了内存申请次数,提升看了Cache命中率和内存访问速度

在之前版本的PHP中,在里每插入一个数据,就要申请一次内存,并且使内存存储在不同的内存页上,访问的时候命中率会降低。

改为宏实现,性能提升5%

提升PHP扩展的性能

新增加4种: , , , 4个函数变为指令,速度更快

其他更多性能优化

基础类型, , 等改为直接进行值拷贝

排序算法改进

(正则表达式)

和使用全局寄存器

使用的功能

PHP7 Jit

PHP7.0-final版本不会携带Jit特性

Jit使Just in Time得缩写,表示运行时将指令转为二进制的机器码。

对于计算密集型的程序,Jit可以将PHP的OpCode直接转换为机器码,大幅提升性能。

PHP开发组自己重启Jit开发计划,预计PHP7.1版本会带有Jit特性

为什么PHP7.0没有Jit

Jit对于实际项目,如WordPress没有太大的性能提升

PHP内置开发测试服务器

即可以为网站根目录启动服务器。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180517G11ZKY00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券