PHP性能:$ this->变量与本地$变量(操作)

时间:2013-01-29 08:31:08

标签: php performance local-variables class-variables

我在课堂上有一个部分,我决定分成一个新部分。

当我将代码段移植到一个新类中时,我注意到它在执行一个foreach循环时要慢得多。

我设法找出部分问题,以便我决定保存最终结果数组。

我认为如果你看到我的代码缩短版本会更容易理解:

原始移植代码:http://pastebin.com/2iBuqmgn 更优化的移植代码:http://pastebin.com/TYU1rHwU

你会在第一个例子中看到我直接操纵$ this-> active_topics。

虽然在第二个例子中我使用局部变量,然后在foreach循环之后将局部变量保存到$ this-> active_topics。

原始循环似乎平均为1秒,而更优化的循环使用0.85平均执行。他们最终会返回完全相同的内容。

为什么更优化的代码,使用局部变量,效率更高?

1 个答案:

答案 0 :(得分:12)

当您访问类中的某些内容时,PHP解释器首先必须在内存中找到该类,然后查看该属性的位置。在一个普通的局部变量上,它不需要搜索类中的属性,它只需要直接访问变量的内存,因此速度更快。