php7性能提升的原因详解


Posted in PHP onOctober 13, 2019

为什么PHP7的性能可以提高这么多?

1. JIT
2. Zval的改变
3. 内部类型zend_string
4. PHP数组的变化(HashTable和Zend Array)
5. 函数调用机制(Function Calling Convention)
6. 通过宏定义和内联函数(inline),让编译器提前完成部分工作

为什么PHP7的在实际的业务性能提高才30%左右?

实际的业务不一定有很复杂的计算逻辑

实际的业务会用到Redis 和MYSQL,网络和IO的瓶颈 影响了PHP7的整体性能

HTTPS的性能问题 限制了PHP7的能力

Redis Proxy的问题

Redis Proxy目的是为了做Redis高可用&分布式缓存用的

经过性能测试,相对直接连接redis而已,用Proxy的性能损耗在10-15%左右(不同的业务 可能影响有比较大的差异)

那么Proxy是不是还有优化的空间的呢?

PHP和Redis长短链接的问题

PHP7 Redis长连接比短连接性能高10%左右(不同的业务差别比较大

PHP7性能提升原因总结:

1、存储变量的结构体变小,尽量使结构体里成员共用内存空间,减少引用,这样内存占用降低,变量的操作速度得到提升。

2、字符串结构体的改变,字符串信息和数据本身原来是分成两个独立内存块存放,php7尽量将它们存入同一块内存,提升了cpu缓存命中率。

3、数组结构的改变,数组元素和hash映射表在php5中会存入多个内存块,php7尽量将它们分配在同一块内存里,降低了内存占用、提升了cpu缓存命中率。

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

以上就是php7性能提升的原因的详细内容,更多请关注三水点靠木其它相关文章!

PHP 相关文章推荐
深入解析phpCB批量转换的代码示例
Jun 27 PHP
使用Discuz关键词服务器实现PHP中文分词
Mar 11 PHP
php事务处理实例详解
Jul 11 PHP
PHP用反撇号执行外部命令
Apr 14 PHP
yii2 commands模式以及配置crontab定时任务的方法
Aug 19 PHP
PHP合并两个或多个数组的方法
Jan 20 PHP
php常用字符串查找函数strstr()与strpos()实例分析
Jun 21 PHP
PHP实现一个限制实例化次数的类示例
Sep 16 PHP
Yii框架getter与setter方法功能与用法分析
Oct 22 PHP
Laravel (Lumen) 解决JWT-Auth刷新token的问题
Oct 24 PHP
php+iframe 实现上传文件功能示例
Mar 04 PHP
PHP+Redis事务解决高并发下商品超卖问题(推荐)
Aug 03 PHP
php抽象方法和普通方法的区别点总结
Oct 13 #PHP
php use和include区别总结
Oct 13 #PHP
阿里对象存储OSS在laravel框架中的使用方法
Oct 13 #PHP
laravel框架 laravel-admin上传图片到oss的方法
Oct 13 #PHP
laravel实现一个上传图片的接口,并建立软链接,访问图片的方法
Oct 12 #PHP
laravel实现上传图片的两种方式小结
Oct 12 #PHP
laravel 修改.htaccess文件 重定向public的解决方法
Oct 12 #PHP
You might like
在yii中新增一个用户验证的方法详解
2013/06/20 PHP
PHP中strlen()和mb_strlen()的区别浅析
2014/06/19 PHP
实例讲解php数据访问
2016/05/09 PHP
PHP编程获取图片的主色调的方法【基于Imagick扩展】
2017/08/02 PHP
PHP时间戳和日期相互转换操作实例小结
2018/12/18 PHP
Centos7.7 64位利用本地完整安装包安装lnmp/lamp套件教程
2021/03/09 Servers
js如何获取object类型里的键值
2014/02/18 Javascript
js实现鼠标感应图片展示的方法
2015/02/27 Javascript
javascript html5摇一摇功能的实现
2016/04/19 Javascript
JavaScript重载函数实例剖析
2016/05/13 Javascript
AngularJS使用ng-repeat和ng-if实现数据的删选显示效果示例【适用于表单数据的显示】
2016/12/13 Javascript
JS正则表达式修饰符中multiline(/m)用法分析
2016/12/27 Javascript
JavaScript判断浏览器及其版本信息
2017/01/20 Javascript
vue学习笔记之指令v-text && v-html && v-bind详解
2017/05/12 Javascript
基于jQuery实现图片推拉门动画效果的两种方法
2017/08/26 jQuery
Vue+jquery实现表格指定列的文字收缩的示例代码
2018/01/09 jQuery
jQuery+ajax实现动态添加表格tr td功能示例
2018/04/23 jQuery
Vue项目安装插件并保存
2019/01/28 Javascript
微信小程序3种位置API的使用方法详解
2019/08/05 Javascript
关于JSON解析的实现过程解析
2019/10/08 Javascript
vue循环数组改变点击文字的颜色
2019/10/14 Javascript
Python下实现的RSA加密/解密及签名/验证功能示例
2017/07/17 Python
Python实现列表删除重复元素的三种常用方法分析
2017/11/24 Python
python 输出上个月的月末日期实例
2018/04/11 Python
pyQt5实时刷新界面的示例
2019/06/25 Python
Python 类属性与实例属性,类对象与实例对象用法分析
2019/09/20 Python
使用HTML5 Canvas API绘制弧线的教程
2016/03/22 HTML / CSS
小学教师师德感言
2014/02/10 职场文书
党课心得体会范文
2014/09/09 职场文书
民政局离婚协议书范本
2014/10/20 职场文书
公司租车协议书
2015/01/29 职场文书
2015秋学期开学寄语
2015/05/28 职场文书
学会用Python实现滑雪小游戏,再也不用去北海道啦
2021/05/20 Python
MySql存储过程之逻辑判断和条件控制
2021/05/26 MySQL
项目中Nginx多级代理是如何获取客户端的真实IP地址
2022/05/30 Servers
windows server2008 开启端口的实现方法
2022/06/25 Servers