background image

因此,我们在系统设计时,需要定义一套清晰的将类名与实际磁盘文件映射的机制。这个
规则越简单越明确,autoload 机制的效率就越高。
结论:autoload 机制并不是天然的效率低下,只有滥用 autoload,设计不好的自动装载函
数才会导致其效率的降低.

所以说尽量避免使用__autoload 魔术方法,有待商榷。

6.requiere_once()比较耗资源;
这是因为 requiere_once 需要判断该文件是否被引用过),所以能不用尽量不用。常用
require/include 方法避免。
7.在 includes 和 requires 中使用绝对路径。
如果包含相对路径,PHP 会在 include_path 里面遍历查找文件。
用绝对路径就会避免此类问题,因此解析操作系统路径所需的时间会更少。
8.如果你需要得到脚本执行时的时间,$_SERVER['REQUSET_TIME']优于 time();
可以想象。一个是现成就可以直接用,一个还需要函数得出的结果。
9.能用 PHP

 

内部字符串操作函数的情况下,尽量用他们,不要用正则表达式; 因为其效

率高于正则;
没得说,正则最耗性能。
有没有你漏掉的好用的函数?例如:
strpbrk()strncasecmp()strpos()/strrpos()/stripos()/strripos()

 

加速 strtr 如果需要转换的全是单个

字符的时候,

 

用字符串而不是数组来做 strtr:
<?php
$addr = strtr($addr, "abcd", "efgh"); // good
$addr = strtr($addr, array('a' => 'e', )); // bad
?>
效率提升:10 倍。
10.str_replace 字符替换比正则替换 preg_replace 快,但 strtr 比 str_replace 又快 1/4;
另外不要做无谓的替换即使没有替换,str_replace 也会为其参数分配内存。很慢!解决办
法:

 

用 strpos 先查找(非常快),看是否需要替换,如果需要,再替换效率:- 如果需要替换:

 

效率几乎相等,差别在 0.1% 左右。

 

如果不需要替换:用 strpos   

快 200%。

11.参数为字符串
如果一个函数既能接受数组又能接受简单字符做为参数,例如字符替换函数,并且参数

 

列表不是太长,可以考虑额外写一段替换代码,使得每次传递参数都是一 个字符,而不
是接受数组做为查找和替换参数。大事化小,1+1>2;
12.最好不用@,用@掩盖错误会降低脚本运行速度;
用@实际上后台有很多操作。用@比起不用@,效率差距:3 倍。特别不要在循环中使用@,

 

在 5 

 

次循环的测试中,即使是先用 error_reporting(0) 关掉错误,在循环完成后再打开,

都比用@快。
13.$row['id']比$row[id]速度快 7 倍
建议养成数组键加引号的习惯;