nikita popov php,PHP中对performance的考虑点
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的考虑点相关推荐
- nikita popov php,PHP新知:PHP 7.4 新语法:箭头函数
原标题:PHP新知:PHP 7.4 新语法:箭头函数 短闭包,也叫做箭头函数,是一种用 php 编写的短函数.当向函数中传递闭包时,这个功能是非常有用的,比如使用 array_map 或是 array ...
- Chrome浏览器 开发者工具中的 Performance
目录 ■Chrome浏览器 开发者工具中的 Performance ■画面 ■代码 (2009年前后,大学时期写的代码.) ■工作中的使用 (两个系统同时运行) --- ■Chrome浏览器 开发者工 ...
- 如何使用谷歌浏览器开发者工具中的Performance分析网页性能
当我们在进行大并发的直播消息互动时,对浏览器的负荷是比较大的,如何提供一种方法来评估实时网页性能以及相关的数据呢? 可以用谷歌浏览器开发者工具中的Performance绘制火焰图对网页进行分析. 接下 ...
- 转 plsql dev中Dynamic Performance Tables not accessible分析解决
相信很多使用plsql dev的朋友多遇到过类此如下面的提示: Dynamic Performance Tables not accessible, Automatic Statistics Disa ...
- JavaScript性能优化【中】-- Performance 工具
Performance 工具 为什么使用 Performance 1)GC 的目的是为了实现内存空间的良性循环: 2)良性循环的基石是合理使用: 3)时刻关注才能确定是否合理: 4)Performan ...
- 浏览器中的performance检测页面性能
主要有4方面:(对照下图) 1.控制按钮. 2.overview.页面性能的高级汇总(FPS:帧率,CPU:CPU占用,NET:网络请求) 3.火焰图.CPU堆叠追踪的可视化(左侧名称是主线程的各种事 ...
- plsql dev中Dynamic Performance Tables not accessible分析解决(转载)
报错原因不在工具本身,可以有3中解决办法:1.第一种处理方法(不推荐)就是在报错的Error对话框中将"Don't show this message again"选项选中,下次就 ...
- PHP 官方被黑与“网络军火商”Zerodium 有关?CEO 辟谣:这个漏洞就是垃圾
整理 | 郑丽媛 出品 | CSDN(ID:CSDNnews) 作为在服务器端执行的脚本语言,PHP 尤为适用于 Web 开发并可嵌入 HTML 中,因此许多个人和企业网站的开发都习惯了 PHP 的便 ...
- PHP 的 Git 服务器被黑客入侵,源码库将永久迁移至 GitHub!
整理 | 郑丽媛 出品 | CSDN(ID:CSDNnews) 作为在服务器端执行的脚本语言,PHP 尤为适用于 Web 开发并可嵌入 HTML 中,因此许多个人和企业网站的开发都习惯了 PHP 的便 ...
最新文章
- 各个国家的市场分析(摩洛哥,德国)
- 反三角函数怎么表示_交流电的功率因数怎么算(里面有例子)
- C 库函数 - atoi()
- Java中key可以重复的Map集合:IdentityHashMap
- JavaScript 时间戳(互相转换)(自定义格式)- 案例篇
- 《算法导论》——矩阵乘法的Strassen算法
- JSP 语法2 都在百分号里面: 5.@符号加JSP三种指令标签 6
- linux nmon安装
- SQL Server 2012笔记分享-42:SQL Server Agent服务配置建议
- 音视频技术开发周刊 | 243
- Python爬虫——Scrapy框架的基本使用
- WIN10 如何隐藏桌面图标
- 35岁以后的Android程序员出路在哪里?大牛最佳总结
- 拒绝男程序员?程序员就活该接盘?
- MentorGraphicsMAJIC-LT的使用
- 《教育学原理》知识框架整理
- torch.Tensor()与torch.tensor()
- 关键词分析工具-免费关键词分析软件
- 大众车功能码与地址码大全(英/中)
- firefly-rk3288j开发板--linux NFC实验之RC522驱动
热门文章
- flowable实战(三)flowable流程实例管理接口
- Spring Boot 企业实战_前夕
- docker Gitlab14.5.0 安装、配置、部署、使用
- 什么叫做罗列式_极简罗列法怎么写作文
- 运放电路的工作原理_图文讲解!教你看懂7款经典运放电路
- 切面是异步还是同步操作‘_细说JS异步发展历程
- mac抹掉磁盘重装系统未能与服务器取得联系_【工具】mac笔记本rm -rf 后 如何恢复删除的文件...
- qt场景中视图QGraphicsView的缩放
- 同步方法及同步代码块
- Java 捕获 mybatis异常_3 springboot集成mybatis和全局异常捕获