0

我没有更好的理由来改写这个问题,你可能会建议我一个。大多数时候,我在 php 中重复使用一个变量,我想知道哪个是内存/处理器高效的。例如

案例A

 $string_var ='1,2,4,5,6,7,8';
 $array_var  =explode(',',$string_var);

案例B:重复使用相同的变量(字符串变量并重新声明为数组对象)

 $array_var ='1,2,4,5,6,7,8';
 $array_var  =explode(',',$array_var);

我的问题不是从代码可读性的角度来看。我想知道哪一种在内存和处理器利用率方面是有效的。

4

4 回答 4

2
$string_var ='1,2,4,5,6,7,8';
$array_var  =explode(',',$string_var);

这将使用更多内存将字符串和数组都保留在内存中。如果您覆盖原始变量,则先前存储的内容将在某个时候被垃圾收集,从而释放内存。在实践中,它可能没有任何真正的区别,因为这些值不会立即被垃圾收集,如果你的变量有合理的范围,它们应该很快就会超出范围。

它在处理时间上几乎没有区别。

选择在逻辑上更有意义的事情。如果您不再需要$string_var,则无需将其作为单独的变量保留。尽量整理你的命名空间。

于 2012-04-17T08:02:48.800 回答
1

每次创建新变量时,都会为该变量分配一点内存。因此 2 个变量将占用大约两倍的内存。最好使用与仅使用 1 个变量所需的内存相同的变量案例 B。

于 2012-04-17T08:01:13.193 回答
0

它们都会以相同的方式影响处理器。但是,案例 B中的内存使用量会更低,因为您会将现有变量更新为新数组。

于 2012-04-17T08:01:46.163 回答
0

如果这不是 PHP,而是像 C 这样的“低级”语言,答案将非常简单:

  1. 速度上会稍微高效一些(直接将结果重写到内存中的目标位置,跳过重写指针)
  2. 在内存方面会稍微更有效率(保存操作右侧和左侧之间结果的临时位置在操作后立即释放,仅永久分配一个变量。)

由于 PHP 是一种脚本语言,我只能说 B 从长远来看可能会稍微节省内存,但数量确实微不足道。除此之外,所有的赌注都没有了,写一个基准。

于 2012-04-17T08:06:59.760 回答