加入收藏 | 设为首页 | 会员中心 | 我要投稿 大连站长网 (https://www.0411zz.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php7性能提升的缘由详解

发布时间:2022-06-22 10:34:28 所属栏目:PHP教程 来源:互联网
导读:在本篇文章里小编给大家分享是的关于php7性能提升的原因以及相关知识点,有需要的朋友们参考下。 为什么PHP7的在实际的业务性能提高才30%左右? 实际的业务不一定有很复杂的计算逻辑 实际的业务会用到Redis 和MYSQL,网络和IO的瓶颈 影响了PHP7的整体性能
  在本篇文章里小编给大家分享是的关于php7性能提升的原因以及相关知识点,有需要的朋友们参考下。
 
  为什么PHP7的在实际的业务性能提高才30%左右?
 
  实际的业务不一定有很复杂的计算逻辑
 
  实际的业务会用到Redis 和MYSQL,网络和IO的瓶颈 影响了PHP7的整体性能
 
  HTTPS的性能问题 限制了PHP7的能力
 
  Redis Proxy的问题
 
  Redis Proxy目的是为了做Redis高可用&分布式缓存用的
 
  经过性能测试,相对直接连接redis而已,用Proxy的性能损耗在10-15%左右(不同的业务 可能影响有比较大的差异)

  为什么PHP7的性能可以提高这么多?
 
  1. JIT
 
  2. Zval的改变
 
  3. 内部类型zend_string
 
  4. PHP数组的变化(HashTable和Zend Array)
 
  5. 函数调用机制(Function Calling Convention)
 
  6. 通过宏定义和内联函数(inline),让编译器提前完成部分工作
 
  那么Proxy是不是还有优化的空间的呢?
 
  PHP和Redis长短链接的问题
 
  PHP7 Redis长连接比短连接性能高10%左右(不同的业务差别比较大
 
  PHP7性能提升原因总结:
 
  1、存储变量的结构体变小,尽量使结构体里成员共用内存空间,减少引用,这样内存占用降低,变量的操作速度得到提升。
 
  2、字符串结构体的改变,字符串信息和数据本身原来是分成两个独立内存块存放,php7尽量将它们存入同一块内存,提升了cpu缓存命中率。
 
  3、数组结构的改变,数组元素和hash映射表在php5中会存入多个内存块,php7尽量将它们分配在同一块内存里,降低了内存占用、提升了cpu缓存命中率。
 
  4、改进了函数的调用机制,通过对参数传递环节的优化,减少一些指令操作,提高了执行效率。
 
 

(编辑:大连站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!