实用PHP优化(一): 代码本身的优化

本想以 Effective PHP 为题的,然而 Effective C++ 是多么的优秀,以至于不敢
用这个神圣名字,萤火岂可与日月争辉。

 

PHP在大部分时候,性能都不是问题,小应用也没有优化必要,大应用一般也是从
架构和算法上做优化,从代码本身入手,收效甚微。然而,某些好习惯,如果能保
持,既无伤代码美观,也不会增加开发时间,累积起来的微小性能优势,也许会改
善那么点整体性能。



习惯 1:替换循环中的函数返回值,如果这个返回值在循环中不变。

解释:函数调用的开销不小,这类函数调用,目的在于使用它的返回值,而每次
返回值都一样的函数调用,实在没有必要,单独提取出来,用变量做替换,既减
少函数调用开销,更能增强代码逻辑。


习惯 2:函数的参数,如果是数组和字符串,尽可能用引用代替传值。

解释:数组和字符串的复制,开销是很大的,如果不会临时修改它,那么用引用,
减少大对象的复制,不仅节约时间,也节约空间。


习惯 3:用最规范的编码名字,而不是可兼容的别名。

解释:mb_string 系列函数,在执行的时候,如果指定了一个编码参数,PHP会
从标准编码名字表中查找编码名字,如果找不到,会尝试从标准编码的MIME字符
集名中查找,如果还是查找不到,会接着尝试标准编码名字的所有别名。这个过程
中,并没有很高效的算法,字符串的匹配,用的是 strcasecmp,性能本身就不高。
所以,应当避免不规范的编码名字。如果多次执行,应当先设置mb_string内部编
码名字,而不是每次都指定编码。(参考php源码中的mbfl_name2encoding函数)


习惯 4:用 PCRE ,  而不是 POSIX Regex
解释:POSIX Regex 在 PHP 5.3.0 已被 DEPRECATED,在PHP6中,它就不存
        在了。况且,PCRE远比POSIX Regex强大,而且PCRE是二进制安全的。


习惯 5:用===代替==,用!==代替!=
解释:参考php源码中的 is_identical_function 函数 和 is_equal_function函数,
        不难看出,equal的性能,不如identical。而且,可以避免你不期望的转换,
        引起让人感到惊讶的错误。


习惯 6:尽量使用普通字符串函数,而不是正则
解释:正则的开销通常远远高于一般字符串处理函数。


习惯 7:尽量使用php内置函数
解释:内置函数,正确性更有保障,大部分情况下性能也更好。特别是在操作数组的时
        候,内置数组函数一般更为高效,因为php中,访问数组元素的开销比较大。


习惯 8:待续
解释:待续

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值