`
sinykk
  • 浏览: 356940 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

php中那些提高性能的编程思想和方法

    博客分类:
  • php
阅读更多

1. 在for, foreach, if, while(未测试, 推断)等等可以用{}带有语句块的地方, 如果业务逻辑上允许被改造为单条语句, 则尽量不要使用{}.
2. foreach比for快一些
结论主要是第一条, 是优化代码时无意中发现, 请知道理论的朋友讲讲, 或者反对的朋友请提供数据, 共同进步, 谢谢.

 

下面是一些提高php执行效率的方法,由于没找到原作者是谁,所以原文链接接不给出了。这里有些是我深有体会的,有些我没有测试过,先放这里,大家看看,同时也当作一个笔记放在这里供以后慢慢看

0、用单引号代替双引号来包含字符串,这样做会更快一些。因为PHP会在双引号包围的字符串中搜寻变量,单引号则不会,注意:只有echo能这么 做,它是一种可以把多个字符串当作参数的“函数”(译注:PHP手册中说echo是语言结构,不是真正的函数,故把函数加上了双引号)。
1、如果能将类的方法定义成static,就尽量定义成static,它的速度会提升将近4倍。

2、$row[’id’] 的速度是$row[id]的7倍。

3、echo 比 print 快,并且使用echo的多重参数(译注:指用逗号而不是句点)代替字符串连接,比如echo $str1,$str2。

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

5、注销那些不用的变量尤其是大数组,以便释放内存。

6、尽量避免使用__get,__set,__autoload。

7、require_once()代价昂贵。

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

9、如果你想知道脚本开始执行(译注:即服务器端收到客户端请求)的时刻,使用$_SERVER[‘REQUEST_TIME’]要好于time()。

10、函数代替正则表达式完成相同功能。

11、str_replace函数比preg_replace函数快,但strtr函数的效率是str_replace函数的四倍。

12、如果一个字符串替换函数,可接受数组或字符作为参数,并且参数长度不太长,那么可以考虑额外写一段替换代码,使得每次传递参数是一个字符,而不是只写一行代码接受数组作为查询和替换的参数。

13、使用选择分支语句(译注:即switch case)好于使用多个if,else if语句。

14、用@屏蔽错误消息的做法非常低效,极其低效。

15、打开apache的mod_deflate模块,可以提高网页的浏览速度。

16、数据库连接当使用完毕时应关掉,不要用长连接。

17、错误消息代价昂贵。

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

19、递增一个全局变量要比递增一个局部变量慢2倍。

20、递增一个对象属性(如:$this->prop++)要比递增一个局部变量慢3倍。

21、递增一个未预定义的局部变量要比递增一个预定义的局部变量慢9至10倍。

22、仅定义一个局部变量而没在函数中调用它,同样会减慢速度(其程度相当于递增一个局部变量)。PHP大概会检查看是否存在全局变量。

23、方法调用看来与类中定义的方法的数量无关,因为我(在测试方法之前和之后都)添加了10个方法,但性能上没有变化。

24、派生类中的方法运行起来要快于在基类中定义的同样的方法。

25、调用带有一个参数的空函数,其花费的时间相当于执行7至8次的局部变量递增操作。类似的方法调用所花费的时间接近于15次的局部变量递增操作。

26、Apache解析一个PHP脚本的时间要比解析一个静态HTML页面慢2至10倍。尽量多用静态HTML页面,少用脚本。

27、除非脚本可以缓存,否则每次调用时都会重新编译一次。引入一套PHP缓存机制通常可以提升25%至100%的性能,以免除编译开销。

28、尽量做缓存,可使用memcached。memcached是一款高性能的内存对象缓存系统,可用来加速动态Web应用程序,减轻数据库负载。对运算码 (OP code)的缓存很有用,使得脚本不必为每个请求做重新编译。

29、当操作字符串并需要检验其长度是否满足某种要求时,你想当然地会使用strlen()函数。此函数执行起来相当快,因为它不做任何计算,只返 回在zval 结构(C的内置数据结构,用于存储PHP变量)中存储的已知字符串长度。但是,由于strlen()是函数,多多少少会有些慢,因为函数调用会经过诸多步 骤,如字母小写化(译注:指函数名小写化,PHP不区分函数名大小写)、哈希查找,会跟随被调用的函数一起执行。在某些情况下,你可以使用isset() 技巧加速执行你的代码。

(举例如下)
if (strlen($foo) < 5) { echo “Foo is too short”$$ }
(与下面的技巧做比较)
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%。

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

44、尽量的少进行文件操作,虽然PHP的文件操作效率也不低的;

45、优化Select SQL语句,在可能的情况下尽量少的进行Insert、Update操作(在update上,我被恶批过);

46、尽可能的使用PHP内部函数(但是我却为了找个PHP里面不存在的函数,浪费了本可以写出一个自定义函数的时间,经验问题啊!);

47、循环内部不要声明变量,尤其是大变量:对象(这好像不只是PHP里面要注意的问题吧?);

48、多维数组尽量不要循环嵌套赋值;

49、在可以用PHP内部字符串操作函数的情况下,不要用正则表达式;

50、foreach效率更高,尽量用foreach代替while和for循环;

51、用单引号替代双引号引用字符串;

52、“用i+=1代替i=i+1。符合c/c++的习惯,效率还高”;

53、对global变量,应该用完就unset()掉;

分享到:
评论

相关推荐

    JAVA,VC,C,C++,VB,PHP编程思想

    编程思想是指在软件开发过程中程序员所采用的方法论和思维方式,它对于编写高质量的代码至关重要。编程思想不仅涵盖了如何有效地实现功能,还涉及到代码的可读性、可维护性和性能优化等多个方面。本篇将从多个角度来...

    PHP性能优化方式

    在PHP性能优化领域,开发者需要关注的点众多,从代码层面到系统配置,每一处细节都可能成为性能提升的关键。以下是一些核心的优化策略: 首先,代码优化是基础。语言级优化通常包括: 1. **魔法函数**:虽然魔法...

    PHP网络编程从入门到精通

    同时,PHP7的性能优化和新特性,如类型提示、返回类型声明、匿名函数等,让PHP在网络编程中的效率得到了显著提升。 在网络安全方面,防止SQL注入、XSS跨站脚本攻击、CSRF跨站请求伪造等是开发者必须关注的问题。PHP...

    商业源码-编程源码-PHP4.0入门与提高.zip

    PHP4.0是PHP语言的一个历史版本,发布于1999年,它...总之,这个压缩包提供了一个学习和研究PHP4.0的宝贵资源,通过深入学习和实践,你将能掌握这个版本的核心技术和编程思想,为后续学习更新的PHP版本打下坚实基础。

    商业源码-编程源码-PHP4 宝典.zip

    8. 实战案例:书中可能包含一些实际的项目案例,如用户注册登录系统、内容管理系统等,通过实战提升读者的编程技能。 9. 性能优化:讨论PHP4代码的性能优化技巧,如何减少资源消耗,提高程序运行效率。 10. 安全性...

    PHP编程(源代码)

    通过分析这些文件,我们可以学习到实际项目中的文件组织结构和模块化编程思想。 总的来说,这个资源包为学习和研究PHP编程提供了丰富的素材。无论是初学者还是经验丰富的开发者,都可以从中获取有价值的信息,提升...

    精通PHP4网络编程

    面向对象编程(OOP)是现代编程的重要思想,尽管PHP4在OOP方面相对较弱,但仍然支持类和对象的概念。读者将学习如何定义类、创建对象,以及使用继承和封装等OOP特性。 最后,安全性和性能优化也是不容忽视的部分。...

    C++编程思想 第1卷:标准C++导引

    从给定的文件信息来看,主要关注点是“C++编程思想 第1卷:标准C++导引”这本书。此书被推荐者誉为“很不错的书籍”,这表明它在C++编程领域具有一定的权威性和实用性。下面将深入探讨与该书相关的C++编程的关键知识...

    PHP网络编程-手把手的实战教材

    OOP是现代编程的核心思想,理解和掌握这些概念可以提高代码的可维护性和复用性。通过实例,读者可以学习如何设计和实现面向对象的PHP程序。 在网络编程方面,本书会讲解如何使用PHP处理HTTP请求和响应,包括GET和...

    PHP核心编程 英文版

    此外,书中还深入讲解了面向对象编程(OOP)的概念,这是现代软件开发中的核心思想。你将学习如何在PHP中定义类、对象,以及如何利用继承、封装和多态性来设计复杂的程序结构。 Web开发方面,本书会涵盖HTTP协议、...

    PHP 核心编程(PDF)

    此外,还将涉及面向对象编程(OOP)的概念,如封装、继承和多态,这些是现代软件开发中的核心思想。PHP自版本5开始加强了对OOP的支持,使得开发者能用更加灵活和结构化的方式来组织代码。 文件I/O操作在PHP中扮演着...

    PHP编程起步.s.pdg

    同时,面向对象编程(OOP)的概念也会被介绍,包括类、对象、继承、封装和多态等,这些都是现代编程中的重要思想。 除了基本语法,本书还会讲解如何使用PHP与MySQL数据库进行交互,创建动态网站。这一部分将涵盖...

    phpMVC框架编程

    3. **性能优化**:自定义框架可以根据项目特点进行特定的优化,从而提高应用的整体性能。 4. **灵活性**:自定义框架可以更好地集成现有的第三方库,如PEAR、Smarty等,避免重复造轮子。 #### 四、传统开发模式的...

    动态网站编程技术

    总的来说,动态网站编程技术课程设计旨在让学生通过实践掌握BS结构的编程思想,熟练运用PHP和MySQL,从而具备开发实际Web应用的能力。这不仅要求理论知识的扎实,更强调动手能力和问题解决技巧。

    PHP 编程指南与样例(PDG)

    理解内存管理、代码效率和缓存技术(如APC、Memcached或Redis)对提升PHP应用性能的影响,是成为一个优秀PHP开发者的关键。 以上内容涵盖了PHP编程的核心知识点,通过实际案例的学习和实践,你将能够构建功能丰富的...

    商业源码-编程源码-PHP v4.0 网络开发技术.zip

    《PHP v4.0 网络开发技术详解》 PHP(PHP:Hypertext Preprocessor,超文本预...通过对这个版本的学习,开发者不仅可以掌握基本的Web开发技术,还能领略到早期OOP思想在实际应用中的体现,进一步提升自己的编程素养。

    PHP+MySQL编程实例

    8. **面向对象编程**:运用类和对象的思想来设计数据库类,包括封装、继承和多态等面向对象特性。 9. **安全性**:学习如何保护数据库免受恶意攻击,例如限制权限、加密敏感数据、使用安全编码实践等。 10. **最佳...

Global site tag (gtag.js) - Google Analytics