background image

会调用 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