PHP7新特性
php7已经发布了很久了,是php十年以来首次大改版。但是我相信大多数人都只闻其名,却不知道php7相比php5版本到底有了哪些改变。
众所周知,php是IO密集型的语言,在一般的网站系统中,它的主要瓶颈在于mysql中,但相比于c语言,c++等,它的计算能力弱了几十倍。性能问题正是php最大的瓶颈。
说到这里,你应该已经知道php7做出了哪些改变,没错,php7最大的改变就是优化了它的性能。先来看一组数据:
从上图可以很明显的看出,在使用了php7之后,wordpress的qps提升了两倍,这绝对是一个质的飞跃。
php7是如何做到性能优化的?
- 以前php在创建变量时,是动态的从堆中创建,现在则是直接从栈中创建变量,速度更快。
- php开发中,最常用的就是array(),以前在通过key查找时,需要做一个hash计算,php7则直接存储了hash值,因此无需再做多余的计算,使得查找速度更快。
- php存储的数据结构做了改变,以前每增加一个变量就要申请一次内存,每一个变量在内存中分布不连续,现在一次申请即可,变量分布比较集中,有效提高命中率。
- 将
call_user_function ,strlen, define, is_int/array/string
这四个常用函数变为php OpCode(Zend虚拟机中的指令),速度更快。 - 排序算法改进等
除了性能之外,php7主要做了两个方面的改变:
1.变量类型
以前php变量是弱类型的,例如
function a($a1, $a2){
}
现在可以指定返回的类型:
function a($a1, $a2) : int {
}
这对于提升计算能力有很大的帮助,因为以前在计算时需要不断判断数据类型,php7则不用了。
2.多异常捕捉
一个catch语句块现在可以通过管道字符(|)来实现多个异常的捕获。 这对于需要同时处理来自不同类的不同异常时很有用,如:
<?php try { } catch (AException | BException $e) { }
不得不承认,php7版本发布是一次重大的改变,那么问题来了,现在已有的php系统要升级吗?
笔者觉得,如果你的系统一直跑的很溜,那么没有必要升级,因为php7最大的提升就是性能。如果你的系统一直在高速发展,用户量不断增加,那么即便现在没有性能问题,未来迟早也会有的。小编劝你趁早升级吧
还没有评论,来说两句吧...