可能重复:
What’s better at freeing memory with PHP: unset() or $var = null
这个问题是What's better at freeing memory with PHP: unset() or $var = null
的后续问题长话短说,我自己的基准似乎与该问题中给出的答案相矛盾。我的问题是......为什么?答案是错的还是有些东西我只是不理解?
<?php
$start = microtime(true);
for ($i = 0; $i < 10000000; $i++) {
$a = 'a';
$a = NULL;
}
$elapsed = microtime(true) - $start;
echo "took $elapsed seconds\r\n";
$start = microtime(true);
for ($i = 0; $i < 10000000; $i++) {
$a = 'a';
unset($a);
}
$elapsed = microtime(true) - $start;
echo "took $elapsed seconds\r\n";
?>
看来“= null”似乎更快。
PHP 5.4结果:
PHP 5.3结果:
PHP 5.2结果:
PHP 5.1结果:
PHP 5.0和4.4的情况开始变得不同了。
5.0:
4.4:
请记住microtime(true)在PHP 4.4中不起作用,所以我不得不使用php.net/microtime / Example#1中给出的microtime_float示例。
答案 0 :(得分:2)
仔细阅读所选答案:
如果你正在做$ whatever = null;然后你正在重写变量 数据。您可能会更快地释放/缩小内存,但它可能会窃取CPU 从真正需要它们的代码中循环出来,产生一个 更长的总执行时间。
所以,如果你所做的只是内存的东西,是的,那会更快。但是在实际的应用程序中,你可能会发现它会减慢更多的速度。