php7新特性

有好多人程序员都喜欢把php推到一个很高的位置上,比如php是这个世界上最好的语言一样。但是无可厚非的是,它还是有很多缺陷的。php的语言没有经过官方的发布与认证,完全是靠一些开源的代码在支撑,有好处也有坏处。最近facebook开发了一个hhvm引擎来快速提升php的性能优化。php语言的主要特征就是开发效率快,语言性能低。php7专门是为了php性能优化而设计的。

php新特性

1、变量类型
php7版本增加了函数的参数和返回值类型限定。目的是能够准确判断变量类型,生成最佳机器机器指令
测试代码:function test(int $a, string $b ,array $c ):int{//code}
2、错误异常:
try/catch捕获例子:
try{non_exists_func();}
catch(EngineException $e)
{echo "Exception:{$e->getMessage()}\n";}

php性能优化
1,zval使用栈内存
在zend引擎和扩展中,经常需要创建一个php的变量,底层就是一个zval指针。之前版本都是通过MAKE_STD_ZVAL
动态的从堆上分配一个zval内存。而php7可以直接使用栈内存。(节省一次内存分配和管理的操作)
2,zend_string存储hash值 array查找不需要反复计算hash值
php7为字符串单独创建了新类型教做zend_string,除了char*指针和长度之外,增加了一个hash字段,用于保存字符串的hash值。数组键值查找不需要反复计算hash值.
减少使用堆内存,增加使用栈内存,堆内存需要2次内存分配,效率低。
3,hashtable桶内直接存储数据,减少了内存申请次数,提升了casche命中率和内容速度
zend_parse_parameters改为宏实现,性能提升了5%;
新增加四种opcode,call_user_function,is_int/string/array,strlen,define四个函数变为php opcode指令,速度更快
其他更多性能优化,如基础类型int,float,bool等改为直接进行值拷贝,排序算法改进,PCRE with JIT,execute_data和opline使用全局寄存器,使用gdb4.8的PGO功能。

php7 JIT
JIT是just in time 的缩写,表示运行时将指令转为二进制机器码。
对于计算密集性的程序,JIT可以将php的opcode直接转换为机器码,大幅提升性能。
但是对有的实际项目来说,jit没有太大的性能提升










评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值