7 php
这个问题是对使用PHP释放内存有什么好处的后续问题:unset()或$ 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";
?>
Run Code Online (Sandbox Code Playgroud)
看来,"= 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示例.
仔细阅读所选答案:
如果你正在做 $whatever = null; 那么你正在重写变量的数据。您可能会更快地释放/收缩内存,但它可能会更快地从真正需要它们的代码中窃取 CPU 周期,从而导致整体执行时间更长。
所以,如果你所做的只是记忆,是的,那会更快。但在实际的应用程序中,您可能会发现它会减慢速度。
| 归档时间: |
|
| 查看次数: |
3105 次 |
| 最近记录: |