php程序效率优化的一些策略小结

php程序效率优化的一些策略小结

1.在可以用file_get_contents替代file、fopen、feof、fgets等系列方法的情况下,尽量用 file_get_contents,因为他的效率高得多!但是要注意file_get_contents在打开一个URL文件时候的PHP版本问题; 
2.尽量的少进行文件操作,虽然PHP的文件操作效率也不低的; 
3.优化Select SQL语句,在可能的情况下尽量少的进行Insert、Update操作(在update上,我被恶批过); 
4.尽可能的使用PHP内部函数(但是我却为了找个PHP里面不存在的函数,浪费了本可以写出一个自定义函数的时间,经验问题啊!); 
5.循环内部不要声明变量,尤其是大变量:对象(这好像不只是PHP里面要注意的问题吧?); 
6.多维数组尽量不要循环嵌套赋值; 
7.在可以用PHP内部字符串操作函数的情况下,不要用正则表达式; 
8.foreach效率更高,尽量用foreach代替while和for循环; 
9.用单引号替代双引号引用字符串; 
10.“用i =1代替i=i 1。符合c/c 的习惯,效率还高”; 
11.对global变量,应该用完就unset()掉 
12.在多重嵌套循环中,如有可能,应当将最长的循环放在内层,最短循环放在外层,这样就可以减少cpu跨切循环层的次数,从而优化程序性能。 
40个优化你的php代码的小提示 
1. 如果一个方法可静态化,就对它做静态声明。速率可提升至4倍。 
2. echo 比 print 快。 
3. 使用echo的多重参数(译注:指用逗号而不是句点)代替字符串连接。 
4. 在执行for循环之前确定最大循环数,不要每循环一次都计算最大值。 
5. 注销那些不用的变量尤其是大数组,以便释放内存。 
6. 尽量避免使用__get,__set,__autoload。 
7. require_once()代价昂贵。 
8. 在包含文件时使用完整路径,解析操作系统路径所需的时间会更少。 
9. 如果你想知道脚本开始执行(译注:即服务器端收到客户端请求)的时刻,使用$_SERVER[‘REQUEST_TIME‘]要好于time()。 
10. 检查是否能用strncasecmp,strpbrk,stripos函数代替正则表达式完成相同功能。 
11. str_replace函数比preg_replace函数快,但strtr函数的效率是str_replace函数的四倍。 
12. 如果一个字符串替换函数,可接受数组或字符作为参数,并且参数长度不太长,那么可以考虑额外写一段替换代码,使得每次传递参数是一个字符,而不是只写一行代码接受数组作为查询和替换的参数。 
13. 使用选择分支语句(译注:即switch case)好于使用多个if,else if语句。 
14. 用@屏蔽错误消息的做法非常低效。 
15. 打开apache的mod_deflate模块。 
16. 数据库连接当使用完毕时应关掉。 
17. $row[‘id‘]的效率是$row[id]的7倍。 
18. 错误消息代价昂贵。 
19. 尽量不要在for循环中使用函数,比如for ($x=0; $x < count($array); $x)每循环一次都会调用count()函数。 
20. 在方法中递增局部变量,速度是最快的。几乎与在函数中调用局部变量的速度相当。 
21. 递增一个全局变量要比递增一个局部变量慢2倍。 
22. 递增一个对象属性(如:$this->prop++)要比递增一个局部变量慢3倍。 
23. 递增一个未预定义的局部变量要比递增一个预定义的局部变量慢9至10倍。 
24. 仅定义一个局部变量而没在函数中调用它,同样会减慢速度(其程度相当于递增一个局部变量)。PHP大概会检查看是否存在全局变量。 
25. 方法调用看来与类中定义的方法的数量无关,因为我(在测试方法之前和之后都)添加了10个方法,但性能上没有变化。 
26. 派生类中的方法运行起来要快于在基类中定义的同样的方法。 
27. 调用带有一个参数的空函数,其花费的时间相当于执行7至8次的局部变量递增操作。类似的方法调用所花费的时间接近于15次的局部变量递增操作。 
28. 用单引号代替双引号来包含字符串,这样做会更快一些。因为PHP会在双引号包围的字符串中搜寻变量,单引号则不会。当然,只有当你不需要在字符串中包含变量时才可以这么做。 
29. 输出多个字符串时,用逗号代替句点来分隔字符串,速度更快。注意:只有echo能这么做,它是一种可以把多个字符串当作参数的“函数”(译注:PHP手册中说echo是语言结构,不是真正的函数,故把函数加上了双引号)。 
30. Apache解析一个PHP脚本的时间要比解析一个静态HTML页面慢2至10倍。尽量多用静态HTML页面,少用脚本。 
31. 除非脚本可以缓存,否则每次调用时都会重新编译一次。引入一套PHP缓存机制通常可以提升25%至100%的性能,以免除编译开销。 
32. 尽量做缓存,可使用memcached。memcached是一款高性能的内存对象缓存系统,可用来加速动态Web应用程序,减轻数据库负载。对运算码(OP code)的缓存很有用,使得脚本不必为每个请求做重新编译。 
33. 当操作字符串并需要检验其长度是否满足某种要求时,你想当然地会使用strlen()函数。此函数执行起来相当快,因为它不做任何计算,只返回在zval结构(C的内置数据结构,用于存储PHP变量)中存储的已知字符串长度。但是,由于strlen()是函数,多多少少会有些慢,因为函数调用会经过诸多步骤,如字母小写化(译注:指函数名小写化,PHP不区分函数名大小写)、哈希查找,会跟随被调用的函数一起执行。在某些情况下,你可以使用isset()技巧加速执行你的代码。 
Ex.(举例如下) 
if (strlen($foo) < 5) { echo “Foo is too short”; } 
vs.(与下面的技巧做比较) 
if (!isset($foo{5})) { echo “Foo is too short”; } 
调用isset()恰巧比strlen()快,因为与后者不同的是,isset()作为一种语言结构,意味着它的执行不需要函数查找和字母小写化。也就是说,实际上在检验字符串长度的顶层代码中你没有花太多开销。 
34. 当执行变量$i的递增或递减时,$i++会比++$i慢一些。这种差异是PHP特有的,并不适用于其他语言,所以请不要修改你的C或Java代码并指望它们能立即变快,没用的。++$i更快是因为它只需要3条指令(opcodes),$i++则需要4条指令。后置递增实际上会产生一个临时变量,这个临时变量随后被递增。而前置递增直接在原值上递增。这是最优化处理的一种,正如Zend的PHP优化器所作的那样。牢记这个优化处理不失为一个好主意,因为并不是所有的指令优化器都会做同样的优化处理,并且存在大量没有装配指令优化器的互联网服务提供商(ISPs)和服务器。 
35. 并不是事必面向对象(OOP),面向对象往往开销很大,每个方法和对象调用都会消耗很多内存。 
36. 并非要用类实现所有的数据结构,数组也很有用。 
37. 不要把方法细分得过多,仔细想想你真正打算重用的是哪些代码? 
38. 当你需要时,你总能把代码分解成方法。 
39. 尽量采用大量的PHP内置函数。 
40. 如果在代码中存在大量耗时的函数,你可以考虑用C扩展的方式实现它们。 
41. 评估检验(profile)你的代码。检验器会告诉你,代码的哪些部分消耗了多少时间。Xdebug调试器包含了检验程序,评估检验总体上可以显示出代码的瓶颈。 
42. mod_zip可作为Apache模块,用来即时压缩你的数据,并可让数据传输量降低80%。

时间: 2024-11-08 09:53:39

php程序效率优化的一些策略小结的相关文章

PHP程序效率优化

1.在可以用file_get_contents替代file.fopen.feof.fgets等系列方法的情况下,尽量用 file_get_contents,因为他的效率高得多!但是要注意file_get_contents在打开一个URL文件时候的PHP版本问题; 2.尽量的少进行文件操作,虽然PHP的文件操作效率也不低的; 3.优化Select SQL语句,在可能的情况下尽量少的进行Insert.Update操作(在update上,我被恶批过); 4.尽可能的使用PHP内部函数(但是我却为了找个

c++程序的效率优化初涉

能写出稳定高效的程序一直是程序员所追求的,今天就和大家一起探讨一下关于C++程序优化的几点看法. 由于C/C++语言的复杂性,致使C++编译器隐藏了层层幔布,我们不经意的一条语句都可能是编译器幕后几经周折的结果,在要求程序高效运行的环境下,每一条语句都会让我们慎之又慎,而程序优化又是个十分广泛的话题,包括程序架构设计的优化,语言本身的优化,编程技巧和策略等等,如此大的范围非我能力所及,这里谈的优化就是在实际开发中遇到的问题. 一.  举手之劳的小差别 既然说优化就一定要仔细,不放过任何微小的细节

Java程序性能优化——性能调优层次

为了提升系统性能,开发人员可以从系统的各个角度和层次对系统进行优化.除了最常见的代码优化外,在软件架构上.JVM虚拟机层.数据库以及操作系统层都可以通过各种手段进行调优,从而在整体上提升系统的性能. 设计调优 设计调优处于所有调优手段的上层,它往往需要在软件开发之前进行.在软件开发之初,软件架构师就应该评估系统可能存在的各种潜在的问题,并给出合理的设计方案.由于软件设计和架构对软件整体有决定性的影响,所以,设计调优对系统性能的影响也是最大的.如果说,代码优化.JVM优化都是对系统微观层面上"量&

软件优化理论基础以及方法论小结.

就像我其他博文中说的,对于软件的优化除开算法,全部都是为流水线服务的.所以优化的时候要时刻记住一这点.由于优化的东西比较杂,我写的不是很好,所以在文章的最后,我会试着提炼出一些通用性的原则. 由于之前在WPS上写的,所以代码没有用模版来排版,各位看官就将就着看吧..我也只是为了提炼一次知识,真正的优化还是认真看一遍书来的好. 有哪些方法优化软件? 通常有两种方式,一种是通过编译器,另一种则是自己写.因为编译器会考虑到特殊情况,所以能做的优化很多时候并不是特别多.这时候就需要自己写优化来帮助 一.

[JAVA] java程序性能优化

一.避免在循环条件中使用复杂表达式 在不做编译优化的情况下,在循环中,循环条件会被反复计算,如果不使用复杂表达式,而使循环条件值不变的话,程序将会运行的更快. 例子: import java.util.vector; class cel { void method (vector vector) { for (int i = 0; i < vector.size (); i++) // violation ; // ... } } 更正: class cel_fixed { void metho

Java程序性能优化——设计优化

原文出自:http://blog.csdn.net/anxpp/article/details/51914119,转载请注明出处,谢谢! 1.前言 OK,之前写了一篇文章:"23种设计模式介绍以及在Java中的应用"详细介绍了如何将设计模式应用到Java编程中,而本文旨在介绍如何利用他们优化我们的程序,使其性能更佳. 设计模式的详细介绍请参照上面链接中的文章,不是本文的重点. 而Java程序的性能优化,不一定就仅仅是以提高系统性能为目的的,还可能是以用户体验.系统可维护性等为目的. 2

C#程序性能优化

程序中我们每一丝动作都会加大程序运行的负担,当刚开始学习程序的时候常常不会去考虑程序运行的效率,大多数情况是为了实现功能,只要功能达到我想要的那么就算是达成了此项目标.当大部分功能的编码实现对我们来说都不是大的问题的时候,我们要提升就要考虑怎样把程序写的更加规范更加高效.怎样写的高效,我们不说整体架构的设计,仅仅分享一下C#自身程序中的一些会影响性能的点. 1.垃圾回收 .NET Framework垃圾回收的成本高,每次回收垃圾的时候调用最久未被使用的算法,找出最久未被使用的对象然后把这个对象分

C++应用程序性能优化(五)——操作系统的内存管理

C++应用程序性能优化(五)--操作系统的内存管理 一.操作系统内存管理简介 长期以来,在计算机系统中,内存都是一种紧缺和宝贵的资源,应用程序必须在载入内存后才能执行.早期,在内存空间不够大时,同时运行的应用程序的数量会受到很大的限制,甚至当某个应用程序在某个运行时所需内存超过物理内存时,应用程序就会无法运行.现代操作系统(Windows.Linux)通过引入虚拟内存进行内存管理,解决了应用程序在内存不足时不能运行的问题.本质上,虚拟内存就是要让一个程序的代码和数据在没有全部载入内存时即可运行.

程序性能优化之SQL篇

如果说功能是程序的躯体,那么性能就是程序的灵魂.完整的功能可以保证程序的躯体是健全的,而良好的性能才是程序灵魂的象征,本文就程序的性能优化做简单的介绍. 最近对程序的性能的体会尤为深刻.最近做了一个数据查询和显示的功能,从7张表大概1500条数据中查询25条数据并且显示出来,时间消耗1秒钟.我的计算机参数为:CPU:i5处理器,4G内存.这个执行速度相当的慢,好在我查询的数据量比较小,等待时间不是很多,但是程序性能优化确实刻不容缓. 仔细分析了程序,发现有很多地方都是需要修改的,我们先从数据库开