当前位置: 首页 > 后端技术 > PHP

PHP7.1_新特性

时间:2023-03-29 20:36:29 PHP

可变类型PHP7版本函数的参数和返回值增加了类型限制。原因:为PHP7.1的JIT特性做准备,加入类型后,PHP,JIT可以准确判断变量类型,生成最佳机器指令。functiontest(int$a,string$b,array$c):int{//code}errorexception过去PHP程序出错后,Zend引擎会报致命错误终止程序。PHP7可以使用try/catch来捕获错误。try{no_func();}catch(EngineException$e){echo"Exception:{$e->getMessage()}\n";}性能优化zval使用栈内存在Zend引擎和扩展中,经常需要创建一个PHPVariable,底层是一个zval指针。以前的PHP版本通过MAKE_STD_ZVAL从堆中动态分配一个zval内存。PHP7可以直接使用栈内存。PHP5zval*val;MAKE_STD_ZVAL(val);PHP7zval;功能:保存内存分配和管理。zend_string存储hash值,数组查询不需要重复计算hashPHP7为字符串创建了一个新的类型叫做zend_string,除了char*指针和长度之外,增加了一个hash字段来保存字符串的hash值.数组键值查找不需要重复计算哈希值struct_zend_string{zend_refcountedgc;zend_ulogh;size_t长度;charval[1]}优化了数组键值查找的性能。将数据直接存储在hashtablebucket中,减少内存申请次数,提高Cache命中率和内存访问速度zend_parse_parameters改为宏实现,性能提升5%。新增4个OPCODE、call_user_funciton、is_int/string/array、strlen、defeind4个该函数改为PHPOpCode指令等性能优化,int、float、bool等基本类型改为直接值拷贝、排序算法得到改进,PCREwithJIT,execute_data和opline使用全局寄存器,gdb4.8的PGO函数与PHP7和JITPHP7.0-final版本不携带JIT特性。JIT是justintime的缩写,意思是在运行时将指令转换为二进制机器码。对于计算密集型程序,JIT可以直接将PHP的OpCode转换成机器码,大大提高性能。参考文件