这两者之间是否存在性能/资源差异?
$a = "foo bar";
$b = substr($a,-3);
if ($b == "bar")
{
echo "bar!!";
}
和
if (substr($a = "foo bar", -3) == "bar")
{
echo "bar!!";
}
在第一个中你正在使用一个额外的变量,我总是这样做是为了使它更具可读性,并且还可以在调试时知道值,我不喜欢在我的条件下进行任何处理,是吗这真的很重要吗?我用的是更多的记忆吗?
我想看看这两者在理论和实践上有何不同,是否应该避免使用不必要的变量赋值?
答案 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)
在这种情况下,你只是分裂的头发。所以没关系。
另外,如果你在一个函数的范围内,那么变量只会在函数返回后收集垃圾。