前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >PHP7和PHP5的区别,给大家详细聊聊【PHP】

PHP7和PHP5的区别,给大家详细聊聊【PHP】

作者头像
sinnoo
发布2022-01-04 16:27:15
6430
发布2022-01-04 16:27:15
举报
文章被收录于专栏:技术人生技术人生

一、前言

最近和几个来应聘的中工聊了聊,基本都会问他们一些7和5的去区别

虽然7升级来已经很久了,可能大家项目中都已经在使用,但是一些面试者的回答让我不算满意

他们大概分为以下三种

1.直接说不知道的,会使用,没研究过。最多也说一句,性能提升,这种你就跟说“你是个好人”是一样的敷衍

2.了解一些,能说一些具体写法的不同,大概性能提升的原理,但是看样子也是看了看网上文章,不算精通

3.极少数能深刻解析的,而且参数了项目的升级,以及能够再次去钻研和分析的

二、说说面试官想听到什么

首先,是要说明性能提升的,然后可以补充下什么导致的提升,然后在哪方面有提升

其次,可以具体举例一些写法的不同,无论你是看博客来的,还是真正实践开发而了解的

最后,如果你参数了项目重构和升级,聊聊你在项目中的定位和做了哪些事情

能回答出以上三点的,其实就不错了,因为你不是初学者,不会再问问a++和++a的区别了,

有些架构的东西你要学会而且你要学习怎么表达

三、说说有哪些区别

1.性能为什么提升?

变量存储字节减小,减少内存占用,提升变量操作速度

改善数组结构,数组元素和hash映射表被分配在同一块内存里,降低了内存占用、提升了 cpu 缓存命中率

改进了函数的调用机制,通过优化参数传递的环节,减少了一些指令,提高执行效率

通过宏定义和内联函数(inline),让编译器提前完成部分工作

比如:数组结构的改变

代码语言:javascript
复制
7为字符串单独创建了新的结构体类型`zend_string`
struct _zend_string {
	zend_refcounted gc;
	zend_ulong		h;
	size_t			len;
	char			val[1]
}
除了char *指针和长度,增加了一个h存储hash值,数组的键名查找不需要反复计算hash值.
以前,虽然HashTable数据结构的查找时间复杂度是O(1),但是每次键名的字符串都需要hash函数
计算成hash整数,但是实际情况是,php程序运行起来后,key几乎是不变的
所以7中直接的把hash值存储起来,节省大量的cpu计算时间,优化性能

2.具体哪些写法的不同

(1)php7移除了一些拓展,比如mysql、 ereg等

(2)session_start()可以定义数组

(3)可以导入同一个namespace下的类简写 use some\namespace\{ClassA, ClassB, ClassC as C};

(4)有了伪随机数产生器:random_bytes() - 加密生存被保护的伪随机字符串。 random_int() - 加密生存被保护的伪随机整数。

(5)使用 define 函数来定义数组 define('sites', [ 'Google', 'Jser', 'Taobao' ]);

(6)php标量类型和返回类型声明 ,开启:

代码语言:javascript
复制
declare(strict_types=1)

(7)三元运算符? : 的 ?? 简写

三、小结

鸟哥的PPT里放出过一组对比数据,就是WordPress在PHP5.6执行100次会产生70亿次的CPU指令执行数目,而在PHP7中只需要25亿次,减少64.2%,这是一个令人震撼的数据。

在鸟哥的整个分享中,给我最深刻的一个观点是:要注意细节,很多个细小的优化,一点点持续地积累,积少成多,最终汇聚为惊艳的成果。为山九仞,岂一日之功,我想大概也是这个道理。

毫无疑问,PHP7在性能方面实现跨越式的提升,如果能够将这些成果应用在PHP的Web系统中,也许我们只需要更少的机器,就可以支撑起更高请求量的服务。

PHP7正式版的发布,令人充满无限憧憬。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2021/01/26 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、前言
  • 二、说说面试官想听到什么
  • 三、说说有哪些区别
  • 三、小结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档