文档章节

PHP语言级的性能优化

TinkerJ
 TinkerJ
发布于 2015/10/19 17:29
字数 601
阅读 25
收藏 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性能优化初探》学习笔记

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

雨醉风尘
2016/12/06
12
0
小蚂蚁学习PHP性能优化(1)--PHP语言级性能优化

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

嗜学如命的小蚂蚁
2015/09/22
126
0
如何使用 APM 搞定 PHP 应用的性能优化?

APM 究竟是什么? 很多人都是第一次听说 APM 的概念,本文主要阐述如何使用 APM 的解决方案来实现 PHP 应用性能的优化。首先先介绍一下 APM (Application Performance Management)即应用性...

OneAPM蓝海讯通
2015/10/12
76
0
PHP 性能分析与实验——性能的宏观分析

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

OneAPM蓝海讯通
2015/08/18
1K
2
PHP 性能分析与实验——性能的宏观分析

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

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

没有更多内容

加载失败,请刷新页面

加载更多

下一页

shell-日志脚本小实验

1.查找日志2018-8-15,求得那一分钟访问量最大。 #/bin/bash#from cc#2018-8-15#2018-08-15.log 哪一分钟 访问量 最大for d in `ls /data/nginx/logs/`doif [ -a 2018-08-15...

chencheng-linux
昨天
0
0
Android中的设计模式之状态模式

参考 《设计模式:可复用面向对象软件的基础 》5.8 State 状态 对象行为型模式 《Android源码设计模式解析与实战》第7章 随遇而安--状态模式 意图 允许一个对象在其内部状态改变时改变它的行...

newtrek
昨天
0
0
xshell端 vim没有颜色

说明 使用xshell连接服务器的时候,使用vim打开文档没有颜色 解决方法: 1.在更目录home或者etc下找到vim的配置文件vimrc 2.vim打开它找个坑,添加下面这个东西 set t_Co=256 3.保存退出,就...

杉下
昨天
0
0
spring 资料

spring boot http://www.ityouknow.com/springboot/2016/01/06/spring-boot-quick-start.html

zaolonglei
昨天
2
0
TypeScript基础入门 - 函数 - 简介

转载 TypeScript基础入门 - 函数 - 简介 项目实践仓库 https://github.com/durban89/typescript_demo.gittag: 1.1.6 为了保证后面的学习演示需要安装下ts-node,这样后面的每个操作都能直接...

durban
昨天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部