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 相关文章推荐
MySQL GBK→UTF-8编码转换
May 24 PHP
PHP循环获取GET和POST值的代码
Apr 09 PHP
PHP ajax 分页类代码
Nov 13 PHP
PHP中SimpleXML函数用法分析
Nov 26 PHP
php使用strip_tags()去除html标签仍有空白的解决方法
Jul 28 PHP
php 如何禁用eval() 函数实例详解
Dec 01 PHP
thinkPHP实现的省市区三级联动功能示例
May 05 PHP
Yii框架分页实现方法详解
May 20 PHP
PHP基于迭代实现文件夹复制、删除、查看大小等操作的方法
Aug 11 PHP
php提供实现反射的方法和实例代码
Sep 17 PHP
Thinkphp5 如何隐藏入口文件index.php(URL重写)
Oct 16 PHP
Laravel5.1 框架Request请求操作常见用法实例分析
Jan 04 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
解密ThinkPHP3.1.2版本之模块和操作映射
2014/06/19 PHP
php绘图之生成饼状图的方法
2015/01/24 PHP
浅谈php命令行用法
2015/02/04 PHP
又十个超级有用的PHP代码片段
2015/09/24 PHP
Laravel中log无法写入问题的解决
2017/06/17 PHP
PHP实现的服务器一致性hash分布算法示例
2018/08/09 PHP
PHP中“=>
2019/03/01 PHP
jqPlot Option配置对象详解
2009/07/25 Javascript
jQuery学习5 jQuery事件模型
2010/02/07 Javascript
JavaScript DOM 学习第三章 内容表格
2010/02/19 Javascript
使用Java实现简单的server/client回显功能的方法介绍
2013/05/03 Javascript
js控制frameSet示例
2013/09/10 Javascript
使用js完成节点的增删改复制等的操作
2014/01/02 Javascript
我的NodeJs学习小结(一)
2014/07/06 NodeJs
原生javascript实现Tab选项卡切换功能
2015/01/12 Javascript
JQuery实现动态适时改变字体颜色的方法
2015/03/10 Javascript
JS处理json日期格式化问题
2015/10/01 Javascript
jQuery实现横向带缓冲的水平运动效果(附demo源码下载)
2016/01/29 Javascript
基于jQuery对象和DOM对象和字符串之间的转化实例
2017/08/08 jQuery
微信小程序实现横向增长表格的方法
2018/07/24 Javascript
nodejs实现一个word文档解析器思路详解
2018/08/14 NodeJs
Vue实现多标签选择器
2019/11/28 Javascript
JQuery中DOM节点的操作与访问方法实例分析
2019/12/23 jQuery
《javascript设计模式》学习笔记一:Javascript面向对象程序设计对象成员的定义分析
2020/04/07 Javascript
[01:13:17]Secret vs NB 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
[01:39:04]DOTA2-DPC中国联赛 正赛 SAG vs CDEC BO3 第二场 2月1日
2021/03/11 DOTA
对python:threading.Thread类的使用方法详解
2019/01/31 Python
关于django 1.10 CSRF验证失败的解决方法
2019/08/31 Python
HTML5 和小程序实现拍照图片旋转、压缩和上传功能
2018/10/08 HTML / CSS
为娇小女性量身打造:Petite Studio
2018/11/01 全球购物
有多年工作经验的自我评价
2014/03/02 职场文书
2014年仓库管理员工作总结
2014/11/18 职场文书
发布会邀请函
2015/01/31 职场文书
仓库管理制度范本
2015/08/04 职场文书
2015团员个人年度总结
2015/11/24 职场文书
2016年母亲节寄语
2015/12/04 职场文书