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 相关文章推荐
如何使用Strace调试工具
Jun 03 PHP
获取URL文件名后缀
Oct 24 PHP
ThinkPHP3.1新特性之字段合法性检测详解
Jun 19 PHP
PHP启动windows应用程序、执行bat批处理、执行cmd命令的方法(exec、system函数详解)
Oct 20 PHP
PHP数组与对象之间使用递归实现转换的方法
Jun 24 PHP
php大小写转换函数(strtolower、strtoupper)用法介绍
Nov 17 PHP
PHP创建自己的Composer包方法
Apr 09 PHP
PHP下载文件函数与用法示例
Sep 27 PHP
PHP开发api接口安全验证操作实例详解
Mar 26 PHP
PHP如何通过带尾指针的链表实现'队列'
Oct 22 PHP
常见的5个PHP编码小陋习以及优化实例讲解
Feb 27 PHP
PHP7移除的扩展和SAPI
Mar 09 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应用程序来获取Web服务器的状态信息
2006/10/09 PHP
php flv视频时间获取函数
2010/06/29 PHP
PHP Session 变量的使用方法详解与实例代码
2013/09/11 PHP
discuz目录文件资料汇总
2014/12/30 PHP
PHP pear安装配置教程
2016/05/14 PHP
php微信公众平台开发(四)回复功能开发
2016/12/06 PHP
[原创]PHP获取数组表示的路径方法分析【数组转字符串】
2017/09/01 PHP
ThinkPHP 在阿里云上的nginx.config配置实例详解
2017/10/11 PHP
php 使用 __call实现重载功能示例
2019/11/18 PHP
php如何获取Http请求
2020/04/30 PHP
Javascript中的数学函数
2007/04/04 Javascript
FLASH 广告之外的链接
2008/12/16 Javascript
javascript 精粹笔记
2010/05/09 Javascript
jQuery下扩展插件和拓展函数的写法(匿名函数使用的典型例子)
2010/10/20 Javascript
基于js与flash实现的网站flv视频播放插件代码
2014/10/14 Javascript
jQuery实现鼠标跟随提示层效果代码(可显示文本,Div,Table,Html等)
2016/04/18 Javascript
Bootstrap实现登录校验表单(带验证码)
2016/06/23 Javascript
jQuery Dialog 打开时自动聚焦的解决方法(两种方法)
2016/11/24 Javascript
解决拦截器对ajax请求的拦截实例详解
2016/12/21 Javascript
利用Chrome DevTools直接调试Node.js和JavaScript的方法详解(并行)
2017/02/16 Javascript
Vue2.0 组件传值通讯的示例代码
2017/08/01 Javascript
pymongo给mongodb创建索引的简单实现方法
2015/05/06 Python
Python配置mysql的教程(推荐)
2017/10/13 Python
PyQt4实现下拉菜单可供选择并打印出来
2018/04/20 Python
详解python中TCP协议中的粘包问题
2019/03/22 Python
python tkinter库实现气泡屏保和锁屏
2019/07/29 Python
基于h5py的使用及数据封装代码
2019/12/26 Python
浅谈python之自动化运维(Paramiko)
2020/01/31 Python
详解Pycharm出现out of memory的终极解决方法
2020/03/03 Python
用python批量下载apk
2020/12/29 Python
C语言变量的命名规则都有哪些
2013/12/27 面试题
电子商务专业自我鉴定
2013/12/18 职场文书
社区活动总结报告
2014/05/05 职场文书
给校长的建议书300字
2014/05/16 职场文书
2014年老干部工作总结
2014/11/21 职场文书
Nginx中break与last的区别详析
2021/03/31 Servers