使用ab进行压力测试
ab -n行数 -c并发数 url
重点关注下面两点:
1、Request per secend : 每秒可接收的请求数
2、Time per request : 每次请求所耗费的时间
优化1、多使用PHP自身的功能(如PHP定义的函数、常量),尽量少自己造轮子,自己写的代码冗余较多,可读性不高,且性能低下
PHP每次接受请求后,都会进行编译成底层语言,C->汇编->机器语言,同时接受大量请求,每个请求都会执行一次编译
示例代码如下:
bad.php
goods.php
可以实现同一功能,使用php自带的函数性能提高了很多倍;
PHP执行流程(参考 http://www.jb51.net/article/74907.htm || http://www.cnblogs.com/hongfei/archive/2012/06/12/2547119.html || http://www.2cto.com/kf/201404/290863.html)
优化二:
PHP内置函数的性能差异,PHP内置函数实现同一功能,已然存在性能差异,最好的办法是比较它们的时间复杂度
比如isset的性能优于array_key_exists
优化三:
尽可能少的使用魔法函数
PHP模仿函数性能不佳,尽可能规避
优化四:
尽量不使用错误运算抑制符@
@的实际逻辑是在@作用代码开始前,增加Opcode,也就是error_report等级设为忽略报错,在代码结束后,将报错等级恢复;
开启vld扩展可以dumps all the opcodes,用来查看opcodes
优化五:
合理使用内存,虽然PHP有内存回收机制,但也要小心使用,利用unset函数及时释放不适用的内存
优化六:
尽量少的使用正则表达式,正则表达式的回溯开销较大,建议利用字符串处理函数,实现相同的逻辑
优化七:避免在循环内做运算,代码如下:
优化八:
减少计算密集型业务,PHP不适合做大数据量的运算,适合衔接Webserver与后端服务,如db、cache等,适合UI呈现;