创建新变量或重新分配旧变量 - php

时间:2014-06-13 05:29:18

标签: php performance variables

在性能方面哪些更便宜?为什么?虽然对于第一种情况它会创建新变量,但在第二种情况下,它不应该首先取消设置var1以重新分配它吗?

1) 
$var1 = $someBigArray;
$var2 = $this->someFunction($var1);

// use $var2

2) 
$var1 = $someBigArray;
$var1 = $this->someFunction($var1);

// user $var1

更新

我真的不能这样做,我只是排除了我的其余代码,询问核心部分并使其看起来更简单 $var1 = $this->someFunction($someBigArray);

2 个答案:

答案 0 :(得分:0)

你有两件事,一件是处理其他就是记忆。

关于处理:

在PHP中,你真的不知道变量的类型是什么。如果$ someBigArray和$ this-> someFunction($ var1)的变量类型不相同,那么分配新变量$ var2会贵得多。如果它们是相同的类型($ someBigArray和$ this-> someFunction($ var1)),那么它就更便宜了。(更少处理)

关于记忆: 使用相同的变量可能会使用更少的内存。 RAM的小优化。

内存便宜,你应该更加小心你使用的处理能力。在这些情况下,尝试做基准测试。

答案 1 :(得分:0)

PHP的垃圾收集有点奇怪,当覆盖变量时,它不会(总是?)从内存中刷新。因此,在记忆方面,分配一个新变量并在旧变量上使用unset()。你真的不希望30Mb的数组浪费在你的记忆中,特别是如果这是一个运行任何时间长度的脚本,或者你曾经有多个它同时运行。

我不知道处理性能。正如纳菲斯所说,尝试一个基准。 (最简单和最愚蠢的方法,制作一个运行1000次的脚本,看看哪个更快)