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 相关文章推荐
escape unescape的php下的实现方法
Apr 27 PHP
php执行sql语句的写法
Mar 10 PHP
php 8小时时间差的解决方法小结
Dec 22 PHP
PHP导入Excel到MySQL的方法
Apr 23 PHP
PHP执行Curl时报错提示CURL ERROR: Recv failure: Connection reset by peer的解决方法
Jun 26 PHP
php实现的常见排序算法汇总
Sep 08 PHP
9段PHP实用功能的代码推荐
Oct 14 PHP
php中Array2xml类实现数组转化成XML实例
Dec 08 PHP
php获取指定(访客)IP所有信息(地址、邮政编码、国家、经纬度等)的方法
Jul 06 PHP
PHP会员找回密码功能的简单实现
Sep 05 PHP
php实现多维数组排序的方法示例
Mar 23 PHP
php实现留言板功能(代码详解)
Mar 28 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转成EXE文件
2006/10/09 PHP
php中使用base HTTP验证的方法
2015/04/20 PHP
用一段js程序来实现动画功能
2007/03/06 Javascript
JavaScript创建对象的写法
2013/08/29 Javascript
用js正确判断用户名cookie是否存在的方法
2014/01/28 Javascript
javascript实现计时器的简单方法
2016/02/21 Javascript
jQuery模仿京东/天猫商品左侧分类导航菜单效果
2016/06/29 Javascript
svg动画之动态描边效果
2017/02/22 Javascript
jQuery实现动态删除LI的方法
2017/05/30 jQuery
JS时间控制实现动态效果的实例讲解
2017/07/31 Javascript
JS中DOM元素的attribute与property属性示例详解
2018/09/04 Javascript
AJAX在JQuery中的应用详解
2019/01/30 jQuery
angular2 NgModel模块的具体使用方法
2019/04/10 Javascript
vue 实现路由跳转时更改页面title
2019/11/05 Javascript
JavaScript组合设计模式--改进引入案例分析
2020/05/23 Javascript
Vue $emit()不能触发父组件方法的原因及解决
2020/07/28 Javascript
vue-model实现简易计算器
2020/08/17 Javascript
[04:04]DOTA2亚洲邀请赛比赛场馆&酒店全攻略
2017/03/23 DOTA
python实现随机密码字典生成器示例
2014/04/09 Python
利用Python操作消息队列RabbitMQ的方法教程
2017/07/19 Python
浅谈django url请求与数据库连接池的共享问题
2019/08/29 Python
Django REST Framework之频率限制的使用
2019/09/29 Python
opencv3/C++ 平面对象识别&透视变换方式
2019/12/11 Python
python与mysql数据库交互的实现
2020/01/06 Python
基于python实现计算两组数据P值
2020/07/10 Python
使用canvas一步步实现图片打码功能的方法
2019/06/17 HTML / CSS
全球知名旅游社区巴西站点:TripAdvisor巴西
2016/07/21 全球购物
ONLY瑞典官网:世界知名服装品牌
2018/06/19 全球购物
装修致歉信
2014/01/15 职场文书
四年级语文教学反思
2014/02/05 职场文书
大学生个人求职信
2014/06/02 职场文书
2015年医务科工作总结范文
2015/05/26 职场文书
优秀员工演讲稿
2019/06/21 职场文书
传单、海报早OUT了,另类传单营销方案送给你!
2019/07/15 职场文书
手写Spirit防抖函数underscore和节流函数lodash
2022/03/22 Javascript
MongoDB修改oplog大小的四种方法
2022/04/11 MongoDB