在用PHP释放内存方面有什么更好的:unset()或$var=null我意识到第二种方法避免了函数调用的开销(更新,实际上是一种语言结构),但是知道其中一种是否比另一种更好是很有趣的。我一直在用unset()在我的大部分编码中,但是最近我已经浏览了一些在网络上找到的、值得尊敬的类,这些类使用$var = null相反。是否有更好的选择,原因是什么?
3 回答
白猪掌柜的
TA贡献1893条经验 获得超10个赞
unset()
做它的名字说的-取消一个变量。它不强制立即释放内存。PHP的垃圾收集器会在它认为合适的时候完成它,因为这些CPU周期无论如何都不需要,或者是在脚本耗尽内存之前,不管首先发生什么。
如果你在做 $whatever = null;
然后重写变量的数据。您可能会更快地释放/缩小内存,但它可能会更快地从真正需要它们的代码中窃取CPU周期,从而导致更长的总体执行时间。
unset
unset($a)
$a
$a = str_repeat('hello world ', 100);unset($a);var_dump($a);
产出:
Notice: Undefined variable: a in xxx NULL
但当 $a = null
使用:
$a = str_repeat('hello world ', 100);$a = null;var_dump($a);Outputs:NULL
看来 $a = null
比它快一点 unset()
相对应:更新符号表条目似乎比删除它更快。
当您尝试使用不存在的 unset
)变量,则会触发错误,变量表达式的值将为NULL。(因为,PHP还应该做什么呢?每个表达式都需要得到一些值。) 一个赋值为空的变量仍然是一个完全正常的变量。
守着一只汪
TA贡献1872条经验 获得超3个赞
unset
return
include
.
unset
- 3 回答
- 0 关注
- 819 浏览
添加回答
举报
0/150
提交
取消