首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >unset vs. .= NULL

unset vs. .= NULL
EN

Stack Overflow用户
提问于 2012-11-29 23:58:01
回答 1查看 3.3K关注 0票数 7

可能重复: What’s better at freeing memory with PHP: unset() or $var = null

这个问题是What's better at freeing memory with PHP: unset() or $var = null的后续问题。

长话短说,我自己的基准似乎与这个问题的答案相矛盾。我的问题是..。为什么?答案是错的还是有什么我不明白的?

代码语言:javascript
复制
<?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结果:

  • 花了0.88389301300049秒
  • 花了2.1757180690765秒

PHP5.3结果:

  • 花了1.7235369682312秒
  • 花了2.9490959644318秒

PHP5.2结果:

  • 花了3.0069220066071秒
  • 花了4.7002630233765秒

PHP5.1结果:

  • 花了2.6272349357605秒
  • 花了5.0403649806976秒

PHP5.0和4.4的情况开始有所不同。

5.0:

  • 花了10.038941144943秒
  • 花了7.0874409675598秒

4.4:

  • 花了7.5352551937103秒
  • 花了6.6245851516724秒

请记住,在PHP4.4中,microtime(true)不起作用,所以我不得不使用php.net/microtime / microtime_float #1中给出的示例。

EN

回答 1

Stack Overflow用户

发布于 2012-11-30 00:00:31

仔细阅读所选的答案:

如果您执行的是$whatever =null,那么您正在重写变量的数据。您可能会更快地释放/缩小内存,但它可能会更快地从真正需要它们的代码中窃取CPU周期,从而导致更长的总体执行时间。

所以,如果你所做的只是记忆,是的,那会更快。但是在一个真正的应用程序中,你可能会发现它会使事情更慢。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13636979

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档