hplib 例如地。而Smarty模板类比PHPLib的Template更复杂,我没有用过,据称有缓templat smarti phplib存机制,不知是否可以弥补其性能损耗。下面就来看看PHPLibphplib 下面损耗的Template类有多少东西可以优化掉。
1.
读入模板文件时,file函数效率低,改用get_file_content函数。
2.
匹配子模板时,正则表达式替换函数preg_replace效率低,改用strreplac 表达式模板_pos函数进行定位和用str_replace函数进行替换操作。此优化手段replac
操作进行后文会详细分析。
3.
模板模型通用性很强,能适应各种情况,但在具体细节的通用性细节各种处理上,通用的方法效率可能很低。可以对模板模型作适模板可能效率当修改。我的做法是建一个相对通用的模板类,然后再派模板做法通用生出一个只适用于特定程序的模板类。在通用模板类的模模板适用通用板模型上可以作些优化(相对于PHPLib的Template),例如在处理二templat phplib 例如维数据表的时候用
PHPLib的Template处理就比较复杂(具体实现方法templat 数据表 phplib可参考《优化php嵌套模版》),需要多次调用类方法(本多次需要参考质上是函数调用),所以重写的时候可以把处理二维数据数据处理可以表的功能封装到一个高效率的方法中,直接避免方法的多封装效率方法次调用。
4.
调试功能在小项目上不需要用,跟调试相关的代码全部去需要代码项目掉。
我在按上面4点重写了模板类之后,一个复杂页面的执行执行页面上面时间缩小了一个数量级(除模板外没有作其它优化)。
现在就优化你的程序的抽象层之间的接口,特别是当这些之间这些现在接口是使用现成的函数或类的时候。因为这些函数或类在使用接口这些设计时会为了适应普遍情况而牺牲一些效率,而且它们的设计效率一些作者也可能没有考虑效率问题。像如此著名的PHPLib的模板类phplib 问题模板的效率也不见得就高。
细节代码优化
优化代码不应总是祈求大刀阔斧式的优化,当大方面已经大刀阔斧已经方面无从入手时,不妨把视线转移到细节上。
1.
上文模板类优化已提到的,正则表达式匹配比一般字符串表达式字符串一般匹配慢得多,尽可能用字符串匹配而不用正则表达式匹配尽可能表达式字符串。有时候虽然用正则表达式匹配使程序代码更简洁,而一有时候表达式虽然般字符串匹配使代码更冗繁,但很多时候字符串匹配仍比字符串代码很多正则表达式高效。
2.
字符串替换函数str_replace和preg_replace都是可以接受数组参数的。有replac
字符串参数时候需要对字符串进行批量替换,则用数组参数比循环调字符串需要参数用替换函数来得高效。例如下面的代码:
1. for ($i = 0; $i < $n; $i ) {
2. $str = str_replace($search[$i], $replace[$i], $str);
3. }
应该换成:
1. $str = str_replace($search, $replace, $str);
注意:这里$search和$replace都是数组
str_replace和preg_replace的数组用法可参考
PHP手册。
3.
对用于赋值的条件语句,可改用?:算符
这里仅举三个细节代码优化的方法。实际上PHP程序还有很实际上细节这里多细节代码优化方法,要掌握这些方法,需要多看PHP手册细节需要掌握,多了解些函数。在解决一些细节
问题时,用不同的函数细节问题一些作不同的搭配,就产生不同的方法,对不同的方法应进行方法进行产生实际效率测试,得出优化方法。
面向对象、面向过程、类、函数、宏
尽管面向对象方法在程序
设计中有很多优点(这里就不罗设计这里方法列了),但一般地说,面向对象程序的执行效率往往不如一般地说效率往往面向过程好,一个显然的理由是面向对象的程序往往要频繁调用对象的方法从而使代码简洁明了,却降低了程序执简洁方法降低行效率。
对于中小型项目,为程序效率着想