我恰好阅读了这个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";
这是对的吗?
答案 0 :(得分:5)
应优化如下
如果您不需要存储它,这是一个好主意,从而避免不必要的内存消耗。但是,如果您需要稍后再次输出相同的内容,最好将其存储在变量中以避免另一个函数调用。
这是对的吗?
是。它叫做copy-on-write。
答案 1 :(得分:1)
在第一个例子中,如果变量只使用一次,那么首先没有点变量,只需立即回显语句结果,就不需要变量。
在第二个例子中,PHP有一个名为copy on write的东西。这意味着如果你有两个指向同一个东西的变量,它们都只是指向相同的内存位。也就是说,直到写入其中一个变量,然后复制,然后对该副本进行更改。
答案 2 :(得分:1)
作者确实有一点,因为将数据复制到变量中将该数据保存在内存中,直到变量为unset
。如果您以后不再需要数据,那确实会浪费内存。
否则两种方法之间的峰值内存消耗完全没有区别,因此他的推理(“复制”)是错误的。