background image

14.在循环里别用函数
例如 For($x=0; $x < count($array); $x), count()函数在外面先计算;原因你懂的。
16.在类的方法里建立局部变量速度最快,几乎和在方法里调用局部变量一样快;
17.建立一个全局变量要比局部变量要慢 2 倍;
由于局部变量是存在栈中的,当一个函数占用的栈空间不是很大的时候,这部分内存很
有可能全部命中 cache,这时候 CPU 访问的效率是很高的。
相反,如果一个函数里既使用了全局变量又使用了局部变量,那么当这两段地址相差较
大时,cpu cache 需要来回切换,那么效率会下降。
(我理解啊)
18.建立一个对象属性(类里面的变量)例如($this->prop++)比局部变量要慢 3 倍;
19.建立一个未声明的局部变量要比一个已经定义过的局部变量慢 9-10 倍
20.声明一个未被任何一个函数使用过的全局变量也会使性能降低(和声明相同数量的局部
变量一样)。
PHP 可能去检查这个全局变量是否存在;
21.方法的性能和在一个类里面定义的方法的数目没有关系
因为我添加 10 个或多个方法到测试的类里面(这些方法在测试方法的前后)后性能没什么
差异;
22.在子类里方法的性能优于在基类中;
23.只调用一个参数并且函数体为空的函数运行花费的时间等于 7-8 次$localvar++运算,
而一个类似的方法(类里的函数)运行等于大约 15 次$localvar++运算;
24 用单引号代替双引号来包含字符串,这样做会更快一些。
因为 PHP 会在双引号包围的字符串中搜寻变量,单引号则不会。
PHP 引擎允许使用单引号和双引号来封装字符串变量,但是这个是有很大的差别的!使

 

用双引号的字符串告诉 PHP 

 

引擎首先去读取字符串内容,查找其中的变 量,并改为变量

对应的值。一般来说字符串是没有变量的,所以使用双引号会导致性能不佳。最好是使用

符串连接而不是双引号字符串。
BAD:
$output = "This is a plain string";
GOOD:
$output = 'This is a plain string';
BAD: 
$type = "mixed";
$output = "This is a $type string";
GOOD:
$type = 'mixed';
$output = 'This is a ' . $type .' string';
25.当 echo 字符串时用逗号代替点连接符更快些。
echo

一种可以把多个字符串当作参数的 函数 (译注:PHP 手册中说 echo 是语言结构,

不是真正的函数,故把函数加上了双引号)。
例如 echo $str1,$str2。