文档章节

PHP语言级的性能优化

TinkerJ
 TinkerJ
发布于 2015/10/19 17:29
字数 601
阅读 28
收藏 0

注:Linux  time命令可以查看一个程序的耗时

优化点 1(少写代码):自写代码冗余较多,可读性不加,并且性能低;php代码需要编译解析为底层语言,这一过程每次请求都会处理一遍,开销很大;好的方法是多使用php内置变量、常数、函数。


优化点 2(PHP内置函数的性能优劣):PHP内置函数之间存在快慢差别;应多了解PHP内置函数的时间复杂度,使用相对较快的函数;例如:isset() 与 array_key_exists() 之间的性能差异。


优化点 3(尽可能少用魔法函数):PHP提供的魔法函数性能不佳,尽量避免使用魔法函数。


优化点 4(产生额外开销的错误抑制符@):PHP提供的错误抑制符只是为了方便”懒人“;@的实际逻辑--在该行代码开始前、结束后,增加Opcode,忽略报错;建议尽量不要使用@错误抑制符;vld(PHP查看opcode的扩展)。


优化点 5(合理使用内存):PHP有内存回收机制,但也应该小心使用内存;建议利用unset()及时释放不使用的内存(注:unset()可能 出现注销不掉的情况)。


优化点 6(尽量少的使用正则表到式):正则表达式的回溯开销较大;建议利用字符串处理函数实现相同逻辑。


优化点 7(避免在循环内做运算):循环内的计算式会被重复计算,例如:

       

$str = 'helle world';
for($i = 0;$i < strlen($str);$i++)
{
    // do something;
}


        代码中strlen($str)将会被重复计算,应在for循环外使用变量接受strlen($str)的返回值,然后使用该变量与$i进行比较。

$str = 'helle world';
$strlength = strlen($str);
for($i = 0;$i < $strlength ;$i++)
{
    // do something;
}



优化点 8(减少计算密集型业务):PHP不适合密集型运算的场景,PHP的语言特性决定了PHP不适合做大数据量运算;PHP适合衔接Webserver与后端服务,UI呈现。


优化点 9(务必使用带引号字符串做键值):PHP会将没有引号的键值当作常量查找,会产生多余的开销和留下程序的隐患;建议键值严格使用引号。


© 著作权归作者所有

共有 人打赏支持
TinkerJ
粉丝 0
博文 1
码字总数 601
作品 0
深圳
前端工程师
私信 提问
小蚂蚁学习PHP性能优化(1)--PHP语言级性能优化

因为sphinx还没有找到比较合适的教材,今天开始学习一下PHP性能优化。记得很久之前做过这么一个功能,就是计算一级人脉下的所有推荐人的资金和,以及每个推荐人的推荐人的资金和,就形成了一...

嗜学如命的小蚂蚁
2015/09/22
126
0
慕课网《PHP性能优化初探》学习笔记

//以下内容为慕课网《PHP性能优化初探》笔记整理 1:什么情况下遇到性能问题 语法使用不恰当 用PHP做了不擅长的问题 连接的服务不给力 PHP自身的短板 2:PHP的性能在项目所占比例约占35% 3:...

雨醉风尘
2016/12/06
12
0
【上海】盛大网络-边锋集团 招聘PHP&JS工程师

高级PHP开发工程师 岗位职责:负责大型互联网社区开发 岗位要求: 1. 有3年互联网行业工作经验; 有大型网站开发经验; 2. 精通PHP,熟悉PHP性能优化和安全开发方法,具备OOP编程思想,熟悉设...

马晓毅
2011/07/15
834
10
新浪网招聘PHP高级工程师 (年薪10万以上)

公司名称: 新浪网技术(中国)有限公司 岗位名称: PHP高级开发工程师 工作地点: 北京海淀区中关村 岗位职责: 负责论坛、贴吧、财经、体育等产品线开发工作 任职要求: 1. 统招重点大学计算...

iamwh
2010/11/02
523
3
PHP 性能分析与实验——性能的宏观分析

【编者按】此前,阅读过了很多关于 PHP 性能分析的文章,不过写的都是一条一条的规则,而且,这些规则并没有上下文,也没有明确的实验来体现出这些规则的优势,同时讨论的也侧重于一些语法要...

OneAPM蓝海讯通
2015/08/18
40
0

没有更多内容

加载失败,请刷新页面

加载更多

sql 开窗函数

开窗函数:在开窗函数出现之前存在着很多用 SQL 语句很难解决的问题,很多都要通过复杂的相关子查询或者存储过程来完成。为了解决这些问题,在 2003 年 ISO SQL 标准加入了开窗函数,开窗函数...

hblt-j
14分钟前
0
0
使用Vue动态生成form表单的实例代码

具有数据收集、校验和提交功能的表单生成器,包含复选框、单选框、输入框、下拉选择框等元素以及,省市区三级联动,时间选择,日期选择,颜色选择,文件/图片上传功能,支持事件扩展。 欢迎大家s...

嫣然丫丫丫
22分钟前
0
0
NEO区块链-DAPP开发直通车-第零篇

什么是DAPP DAPP 是以太坊发明的词汇 Decentralized Application. 目前基于区块链技术开发的应用程序广泛的接受使用了这一名称。 NEL将为开发DAPP提供全面的服务 什么是NEL NEL是 “NewEcon...

NEO-FANS
25分钟前
1
0
可视化软件VisIt在Ubuntu18.04上的安装

可视化软件VisIt在Ubuntu18.04上的安装 参考文档及使用说明 1.下载 在官网下载页面下载合适版本的安装文件,Ubuntu有专用的 https://wci.llnl.gov/simulation/computer-codes/visit/executa...

佚文
31分钟前
1
0
selenium之表格的定位

真的勇士, 敢于直面惨淡的warning、 敢于正视淋漓的error 目录 被测试网页的HTML代码 1.遍历表格所有单元格 2.定位表格中的某个元素 3.定位表格中的子元素 总结 浏览器网页常常会包含各类表...

程序猿拿Q
46分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部