我碰巧读到了这个http://code.google.com/speed/articles/optimizing-php.html
它声称这个代码
$description = strip_tags($_POST['description']);
echo $description;
应按照以下进行优化
echo strip_tags($_POST['description']);
然而,在我的理解中,PHP中的赋值操作不一定是在内存中创建副本。
这在内存中只有一个"abc"的副本。
$a = $b = "abc";
只有当一个变量发生变化时,它才会消耗更多内存。
$a = $b = "abc";
$a = "xyz";
这是正确的吗?
应按照以下进行优化
如果你不需要存储它,这只是一个好主意,从而避免不必要的内存消耗。但是,如果以后需要再次输出相同的内容,最好将其存储在变量中,以避免另一个函数调用。
这是正确的吗?
是的。它被称为书面复制。
在第一个例子中,如果变量只使用一次,那么首先就没有创建变量的意义,只需立即返回语句结果,就不需要该变量。
在第二个例子中,PHP有一种叫做写时复制的东西。这意味着,如果你有两个变量指向同一个东西,它们都只是指向同一块内存。也就是说,直到其中一个变量被写入,然后创建一个副本,并对该副本进行更改。
作者的观点是,将数据复制到变量中将将数据保存在内存中,直到变量为unset
。如果以后不再需要这些数据,那确实是浪费了内存。
否则,这两种方法在峰值内存消耗方面根本没有区别,所以他的推理("复制")是错误的。