php性能优化(1)

1 篇文章 0 订阅

参考文献: https://www.imooc.com/learn/205

php 语言级性能优化

1、优点化:少写代码,多用php自身能力

性能问题:自写代码冗余较多,可读性不佳,并且性能低

为什么性能低???

php代码需要编译解析为底层语言,这一次过程每次请求都会处理一遍,开销大

好的方法:

多使用php内置变量、常量、函数  

2、优化点:PHP内置函数的性能优劣

情况描述: PHP内置函数,之间依然存在快慢差异

好的建议:多去了解PHP内置函数的时间复杂度

举例

isset($arr[i])  // 耗时大概50ms

array_key_exists($i,$arr) // 耗时大概85ms

3、优化点:尽可能少用魔法函数

情况描述:PHP提供的魔法函数,性能不佳

为什么性能极低???

为了个PHP程序员省事,PHP语言为你做了很多

好的方法:尽可能规避使用PHP魔法函数

4、优化点:产生额外开销的错误抑制符 @

情况描述:

PHP提供的错误抑制符只是为了方便"懒人"

@的实际逻辑:

在代码开始前、结束后,增加Opcode,忽略报错

php -dvld.active=1 -dvld.execute=0 test.ph

好的建议:尽量不要使用 @错误抑制符

5、优化点:合理使用内存

情况描述:PHP有内存回收机制保底,但也请小心使用内存

好的建议:利用unset()及时是否不使用的内存(注:unset会出现注销不掉的情况)

拓展

unset() 销毁指定的变量。

unset() 在函数中的行为会依赖于想要销毁的变量的类型而有所不同。

如果在函数中 unset() 一个全局变量,则只是局部变量被销毁,而在调用环境中的变量将保持调用 unset() 之前一样的值。

如果在函数中 unset() 一个通过引用传递的变量,则只是局部变量被销毁,而在调用环境中的变量将保持调用 unset() 之前一样的值

如果在函数中 unset() 一个静态变量,那么在函数内部此静态变量将被销毁。但是,当再次调用此函数时,此静态变量将被复原为上次被销毁之前的值。

6、优化点:尽量少的使用正则表达式

情况描述:正则表达式的回溯开销较大

好的建议:利用字符串处理函数,实现相同逻辑

7、优化点:避免在循环内做运算

情况描述:循环内的计算式将会被重复计算

代码示例

$str = 'hello world';

for($i=0;$i

...code...

}

8、优化点:减少计算密集型业务

情况描述:PHP不适合密集型运算的场景

为什么??

PHP语言特性决定了PHP不适合做大户数据量运算

PHP适用场景:适合衔接Webserver与后端服务、UI呈现

9、优化点:务必使用带引号字符串做键值

情况描述: PHP会将没有引号的键值当作常量,产生查找常量的开销

好的建议:严格使用引号作为键值

学习笔记,仅供参考!如有侵权,请联系删除 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yunxixiao

你的鼓励是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值