Nikita Popov 在他的演讲中谈了几个PHP 程序中和performance相关的point。

1.PHP使用shared memory, preload的方式事先分配,而只有在所有的处理结束之后,share memory 才会断开和所有进程或者thread之间的联系。

光是opcode,FPM的设定还不足以提高performance.

用class,并且尽量用继承既有class的方式创建新的class 可以比较好的利用资源

用array 比用class要消耗内存资源

PHP中有两种cache方式,一种是ACPU,一种是opcache,ACPU对于比较大的数据handle起来比较吃力,只能操作一些较小的原生的type

array 比class 要消耗内存

其中[ "foo"=>"bar", "bar"=>"baz"] 这种形式的array最为消耗内存,相比之下packed array, ["bar","baz"]略少,可以参考下图:

memoUsage_php.png

Type check 对于比较多loop的程序反而是有优化performance作用的

通常认为不标注变量的type,php在运行的初期不做type check, 运行的performance更好,但在使用opcache的情况,做type check可以提升2.5倍的执行速度:

typeOptimization.jpg

GC会影响程序运行,如果关闭GC,可以提升运行速度

GC的运行原理,在7.3之前是预先开了10000root buffer,然后再GC去回收7.3之后采用动态GC阈值,稍微提高了一些效率。

另外GC的mark,swap 方式,在变量count到0的情况下销毁,而对于一些传址而非传值的函数无法count 到0,可能会产生遗漏(可能会发生memory leak)

GC.jpg

namespace的定义

一些含糊的namespace 定义使得VM查找class或者function变得迂回,建议在一些namespace面前加上\ 明确命名空间。

(这个目前7.4之后会给出compiler error提示而矫正)

namespaceFallback.jpg

nikita popov php,PHP中对performance的考虑点相关推荐

  1. nikita popov php,PHP新知:PHP 7.4 新语法:箭头函数

    原标题:PHP新知:PHP 7.4 新语法:箭头函数 短闭包,也叫做箭头函数,是一种用 php 编写的短函数.当向函数中传递闭包时,这个功能是非常有用的,比如使用 array_map 或是 array ...

  2. Chrome浏览器 开发者工具中的 Performance

    目录 ■Chrome浏览器 开发者工具中的 Performance ■画面 ■代码 (2009年前后,大学时期写的代码.) ■工作中的使用 (两个系统同时运行) --- ■Chrome浏览器 开发者工 ...

  3. 如何使用谷歌浏览器开发者工具中的Performance分析网页性能

    当我们在进行大并发的直播消息互动时,对浏览器的负荷是比较大的,如何提供一种方法来评估实时网页性能以及相关的数据呢? 可以用谷歌浏览器开发者工具中的Performance绘制火焰图对网页进行分析. 接下 ...

  4. 转 plsql dev中Dynamic Performance Tables not accessible分析解决

    相信很多使用plsql dev的朋友多遇到过类此如下面的提示: Dynamic Performance Tables not accessible, Automatic Statistics Disa ...

  5. JavaScript性能优化【中】-- Performance 工具

    Performance 工具 为什么使用 Performance 1)GC 的目的是为了实现内存空间的良性循环: 2)良性循环的基石是合理使用: 3)时刻关注才能确定是否合理: 4)Performan ...

  6. 浏览器中的performance检测页面性能

    主要有4方面:(对照下图) 1.控制按钮. 2.overview.页面性能的高级汇总(FPS:帧率,CPU:CPU占用,NET:网络请求) 3.火焰图.CPU堆叠追踪的可视化(左侧名称是主线程的各种事 ...

  7. plsql dev中Dynamic Performance Tables not accessible分析解决(转载)

    报错原因不在工具本身,可以有3中解决办法:1.第一种处理方法(不推荐)就是在报错的Error对话框中将"Don't show this message again"选项选中,下次就 ...

  8. PHP 官方被黑与“网络军火商”Zerodium 有关?CEO 辟谣:这个漏洞就是垃圾

    整理 | 郑丽媛 出品 | CSDN(ID:CSDNnews) 作为在服务器端执行的脚本语言,PHP 尤为适用于 Web 开发并可嵌入 HTML 中,因此许多个人和企业网站的开发都习惯了 PHP 的便 ...

  9. PHP 的 Git 服务器被黑客入侵,源码库将永久迁移至 GitHub!

    整理 | 郑丽媛 出品 | CSDN(ID:CSDNnews) 作为在服务器端执行的脚本语言,PHP 尤为适用于 Web 开发并可嵌入 HTML 中,因此许多个人和企业网站的开发都习惯了 PHP 的便 ...

最新文章

  1. 各个国家的市场分析(摩洛哥,德国)
  2. 反三角函数怎么表示_交流电的功率因数怎么算(里面有例子)
  3. C 库函数 - atoi()
  4. Java中key可以重复的Map集合:IdentityHashMap
  5. JavaScript 时间戳(互相转换)(自定义格式)- 案例篇
  6. 《算法导论》——矩阵乘法的Strassen算法
  7. JSP 语法2 都在百分号里面: 5.@符号加JSP三种指令标签 6
  8. linux nmon安装
  9. SQL Server 2012笔记分享-42:SQL Server Agent服务配置建议
  10. 音视频技术开发周刊 | 243
  11. Python爬虫——Scrapy框架的基本使用
  12. WIN10 如何隐藏桌面图标
  13. 35岁以后的Android程序员出路在哪里?大牛最佳总结
  14. 拒绝男程序员?程序员就活该接盘?
  15. MentorGraphicsMAJIC-LT的使用
  16. 《教育学原理》知识框架整理
  17. torch.Tensor()与torch.tensor()
  18. 关键词分析工具-免费关键词分析软件
  19. 大众车功能码与地址码大全(英/中)
  20. firefly-rk3288j开发板--linux NFC实验之RC522驱动

热门文章

  1. flowable实战(三)flowable流程实例管理接口
  2. Spring Boot 企业实战_前夕
  3. docker Gitlab14.5.0 安装、配置、部署、使用
  4. 什么叫做罗列式_极简罗列法怎么写作文
  5. 运放电路的工作原理_图文讲解!教你看懂7款经典运放电路
  6. 切面是异步还是同步操作‘_细说JS异步发展历程
  7. mac抹掉磁盘重装系统未能与服务器取得联系_【工具】mac笔记本rm -rf 后 如何恢复删除的文件...
  8. qt场景中视图QGraphicsView的缩放
  9. 同步方法及同步代码块
  10. Java 捕获 mybatis异常_3 springboot集成mybatis和全局异常捕获