PHP 性能:$this >变量与局部$variable(操作)


PHP performance: $this->variable versus local $variable (manipulating)

我在一个班级中有一个部分,我决定拆分成一个新的部分。

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

设法追踪了部分问题,即我决定如何保存最终结果数组。

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

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

您将看到,在第一个例子中,我直接操作$this->active_topics一直到低谷。

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

对于原始循环,循环似乎平均为 1 秒,而更优化的循环平均执行时间为 0.85。它们最终返回完全相同的内容。

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

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