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 相关文章推荐
PHP的ASP防火墙
Oct 09 PHP
PHP中的float类型使用说明
Jul 27 PHP
php提交表单时判断 if($_POST[submit])与 if(isset($_POST[submit])) 的区别
Feb 08 PHP
mac下使用brew配置环境的步骤分享
May 23 PHP
php无限遍历文件夹示例分享
Mar 04 PHP
php版本的cron定时任务执行器使用实例
Aug 19 PHP
9条PHP编程小知识及易犯的小错误
Jan 22 PHP
PHP实现发送邮件的方法(基于简单邮件发送类)
Dec 17 PHP
通过chrome浏览器控制台(Console)进行PHP Debug的方法
Oct 19 PHP
Laravel 5.4因特殊字段太长导致migrations报错的解决
Oct 22 PHP
PHP微信H5支付开发实例
Jul 25 PHP
PHP实现百度人脸识别
May 06 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
php的mssql数据库连接类实例
2014/11/28 PHP
PHP 文件上传后端处理实用技巧方法
2017/01/06 PHP
刷新时清空文本框内容的js代码
2007/04/23 Javascript
JS将所有对象s的属性复制给对象r(原生js+jquery)
2014/01/25 Javascript
javascript使用输出语句实现网页特效代码
2015/08/06 Javascript
javascript中return,return true,return false三者的用法及区别
2015/11/17 Javascript
js创建对象的方法汇总
2016/01/07 Javascript
浅谈DOCTYPE对$(window).height()取值的影响
2016/07/21 Javascript
jQuery基于排序功能实现上移、下移的方法
2016/11/26 Javascript
完美解决jQuery 鼠标快速滑过后,会执行多次滑出的问题
2016/12/08 Javascript
js实现用户输入的小写字母自动转大写字母的方法
2017/01/21 Javascript
vue中Element-ui 输入银行账号每四位加一个空格的实现代码
2018/09/14 Javascript
vue axios基于常见业务场景的二次封装的实现
2018/09/21 Javascript
Vue实现购物车详情页面的方法
2019/08/20 Javascript
jQuery利用cookie 实现本地收藏功能(不重复无需多次命名)
2019/11/07 jQuery
python del()函数用法
2013/03/24 Python
Python实现拼接多张图片的方法
2014/12/01 Python
Python pickle模块用法实例
2015/04/14 Python
Python中利用Scipy包的SIFT方法进行图片识别的实例教程
2016/06/03 Python
Python正则表达式非贪婪、多行匹配功能示例
2017/08/08 Python
Python获取昨天、今天、明天开始、结束时间戳的方法
2018/06/01 Python
Python3 执行Linux Bash命令的方法
2019/07/12 Python
基于MATLAB和Python实现MFCC特征参数提取
2019/08/13 Python
Python多线程实现支付模拟请求过程解析
2020/04/21 Python
如何基于Python爬取隐秘的角落评论
2020/07/02 Python
Python xlrd/xlwt 创建excel文件及常用操作
2020/09/24 Python
Python QT组件库qtwidgets的使用
2020/11/02 Python
猫途鹰:全球领先的旅游点评社区
2017/04/07 全球购物
国外的一些J2EE面试题一
2012/10/13 面试题
幼教简历自我评价
2014/01/28 职场文书
教师节促销方案
2014/03/22 职场文书
社区戒毒工作方案
2014/06/04 职场文书
就业证明函
2015/06/17 职场文书
盘点2020年适合农村地区创业的项目
2019/10/16 职场文书
关于flex 上下文中自动 margin的问题(完整例子)
2021/05/20 HTML / CSS
SQL Server内存机制浅探
2022/04/06 SQL Server