文档章节

PHP语言级的性能优化

TinkerJ
 TinkerJ
发布于 2015/10/19 17:29
字数 601
阅读 26
收藏 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
系统级编程语言性能大PK的笑话-Go语言

喜欢和不喜欢Go语言的都喜欢拿性能PK说事. 流传比较广的是benchmarksgame的PK数据: http://benchmarksgame.alioth.debian.org/u64q/go.php 在 benchmarksgame测试中, Go语言的性能已经由之前...

chai2010
2013/08/06
0
7
PHP 性能分析与实验——性能的宏观分析

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

OneAPM蓝海讯通
2015/08/18
1K
2

没有更多内容

加载失败,请刷新页面

加载更多

rabbitmq学习(一)

RabbitMQ是目前非常热门的一款消息中间件,具有高可靠、易拓展、高可用及丰富的功能 1.什么是消息中间件 消息是指在应用间传送的数据。包含文本字符串、JSON、内嵌对象 消息队列中间件(消息...

hensemlee
22分钟前
1
0
学习设计模式——原型模式

1. 认识原型模式 1. 定义:用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象。 2. 结构: Prototype:声明一个克隆自身的接口,用来约束想要克隆自己的具体实现类,要求这些类...

江左煤郎
28分钟前
1
0
观察者模式

观察者模式的套路 有如下角色: 事件,比如修改,用户点击; 事件队列,触发事件之后,会把事件一个一个放入事件队列 监听器,采用某种方式(一般是轮询,或者io阻塞机制),来判断事件队列是否有新的未...

黄威
31分钟前
1
0
线程安全策略

四个线程安全策略 线程限制: 一个被线程限制的对象,由线程独占,并且只能被占有它的线程修改 共享只读: 一个共享只读的对象,在没有额外同步的情况下,可以被多个线程并发访问,但是任何线...

Ala6
38分钟前
2
0
Dubbo (三)源码分析 —— 架构原理

1 核心功能 首先要了解Dubbo提供的三大核心功能: Remoting:远程通讯 提供对多种NIO框架抽象封装,包括“同步转异步”和“请求-响应”模式的信息交换方式。 Cluster: 服务框架 提供基于接口方...

小刀爱编程
40分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部