php优化

来源:互联网 发布:郭靖黄蓉后代 知乎 编辑:程序博客网 时间:2024/06/05 01:45

整理了一些php优化方面的东西:

1. 静态方法比普通方法快;

    单纯方法调用普通方法比静态方法快,但调用普通方法之前需要new操作,两步操作导致调用普通方法比调用静态方法慢

2. 尽量减少方法调用,特别是只有一两句而且还频繁调用的方法。

    一些减少方法调用的小技巧:

    time() -> $_SERVER[REQUEST_TIME]

    phpversion() -> PHP_VERSION

    get_class()  -> __CLASS__

    is_null() -> NULL ===

    strlen($str)> 5 –>isset($str{5})

    print()-> echo

3. 使用include代替include_once,require一样;

4.  @效率低下;

5. 减少内存使用,避免没必要的临时变量,变量使用完要unset;

6. preg系列函数性能低,比如str_replace比preg_replace效率快;

7. $array['foo']比$array[foo]快7倍,常量会生成一个临时变量;

8. 双引号性能比单引号差,双引号会搜寻变量和转义字符,单引号不会;

9. 在执行for循环之前确定最大循环数,不要每循环一次都计算最大值,最好运用foreach代替;

    虽然count,strlen不会进行遍历,但毕竟是一次函数调用

10. include文件时尽量使用绝对路径,因为它避免了PHP去include_path里查找文件的速度,解析操作系统路径所需的时间会更少;

11. 使用选择分支语句(译注:即switch case)好于使用多个if,else if语句;

12. 使用引用,减少copy开销;

13. 在方法中递增局部变量,速度是最快的。几乎与在函数中调用局部变量的速度相当;

14. 递增一个全局变量要比递增一个局部变量慢;

15. 递增一个对象属性(如:$this->prop++)要比递增一个局部变量慢,也要比递增全局变量慢;

16. 递增一个未预定义的局部变量要比递增一个预定义的局部变量慢9至10倍;

17. 派生类中的方法运行起来要快于在基类中定义的同样的方法;

18. 当执行变量$i的递增或递减时,$i++会比++$i慢一些。这种差异是PHP特有的,并不适用于其他语言,所以请不要修改你的C或Java代码并指望它们能立即变快,没用的。++$i更快是因为它只需要3条指令(opcodes),$i++则需要4条指令。后置递增实际上会产生一个临时变量,这个临时变量随后被递增。而前置递增直接在原值上递增。这是最优化处理的一种,正如Zend的PHP优化器所作的那样。牢记这个优化处理不失为一个好主意,因为并不是所有的指令优化器都会做同样的优化处理,并且存在大量没有装配指令优化器的互联网服务提供商(ISPs)和服务器;

19. 尽量采用大量的PHP内置函数,内置函数比用户函数快;

20. 在可以用file_get_contents替代file、fopen、feof、fgets等系列方法的情况下,尽量用file_get_contents,因为他的效率高得多!但是要注意file_get_contents在打开一个URL文件时候的PHP版本问题;

21. 用i+=1代替i=i+1。符合c/c++的习惯,效率还高;

22. 对global变量,应该用完就unset()掉;

23. 变量名,方法名尽量简短,提高查找性能;

24. 多使用缓存;

25. 设置超时时间;

 

 

原创粉丝点击