问题描述
|
我碰巧读了这个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有一个称为写时复制的东西。这意味着,如果您有两个指向同一事物的变量,那么它们都都指向同一位内存。直到写入其中一个变量,然后创建副本,然后对该副本进行更改。
, 作者确实有一点要复制数据到变量中,这样会将数据保留在内存中,直到变量为“ 4”为止。如果以后不需要再次使用数据,则确实浪费了内存。
否则,两种方法之间的峰值内存消耗根本没有区别,因此他的推理(“复制”)是错误的。