在PHP中使用较少的变量是否与性能有关?

时间:2011-12-12 22:49:11

标签: php performance variables

这两者之间是否存在性能/资源差异?

$a = "foo bar";
$b = substr($a,-3);
if ($b == "bar")
{
      echo "bar!!";
}

if (substr($a = "foo bar", -3) == "bar")
{
      echo "bar!!";
}

在第一个中你正在使用一个额外的变量,我总是这样做是为了使它更具可读性,并且还可以在调试时知道值,我不喜欢在我的条件下进行任何处理,是吗这真的很重要吗?我用的是更多的记忆吗?

我想看看这两者在理论和实践上有何不同,是否应该避免使用不必要的变量赋值?

3 个答案:

答案 0 :(得分:4)

唯一的区别(除了AST和/或字节码的差异)是当你执行$b = substr($a, -3)时,将返回的字符串保留在$b中,直到$b超出范围,然后释放引用,然后可以对字符串进行垃圾回收。

当你以另一种方式执行时,字符串用于与"bar"的比较,然后立即被丢弃,以便垃圾收集器可以更快地清理它。

这会对你产生影响吗?不。不要把它考虑在内,因为它不能夸大它是多么小。代码清晰。

答案 1 :(得分:1)

理论上,是的,更少的变量意味着程序使用更少的内存,而可以使其自身具有更好的性能。然而,考虑到可用的处理能力和PHP的本质,这是一个非常小的点。它旨在成为速度而非极端性能的脚本/编程语言。做最可读的,能够在你的时间内完成工作,而不是CPU。

<小时/> 查看Jeff Atwood's post about the perils of Micro-Optimization

答案 2 :(得分:0)

在这种情况下,你只是分裂的头发。所以没关系。

另外,如果你在一个函数的范围内,那么变量只会在函数返回后收集垃圾。