可能重复: 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“更快。
PHP5.4结果:
PHP5.3结果:
PHP5.2结果:
PHP5.1结果:
PHP5.0和4.4的情况开始有所不同。
5.0:
4.4:
请记住,在PHP4.4中,microtime(true)不起作用,所以我不得不使用php.net/microtime / microtime_float #1中给出的示例。
发布于 2012-11-30 00:00:31
仔细阅读所选的答案:
如果您执行的是$whatever =null,那么您正在重写变量的数据。您可能会更快地释放/缩小内存,但它可能会更快地从真正需要它们的代码中窃取CPU周期,从而导致更长的总体执行时间。
所以,如果你所做的只是记忆,是的,那会更快。但是在一个真正的应用程序中,你可能会发现它会使事情更慢。
https://stackoverflow.com/questions/13636979
复制相似问题