我没有更好的理由改写这个问题,你可能会建议我一个。大多数时候,我在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);
我的问题不是从代码可读性的角度来看.我想知道哪一种在内存和处理器利用率方面是有效的方法。
$string_var ='1,2,4,5,6,7,8';
$array_var =explode(',',$string_var);
这会将字符串和数组都保留在内存中,使用更多内存。如果要覆盖原始变量,则先前存储的内容将在某个时候被垃圾回收,从而释放内存。在实践中,它可能不会产生任何真正的区别,因为值不会立即被垃圾回收,如果你的变量范围合理,它们应该很快就会超出范围。
它在处理时间上几乎没有区别。
选择逻辑上更有意义的方法。如果您不再需要$string_var
,则无需将其作为单独的变量保留。尝试尽可能整理命名空间。
每次创建新变量时,都会为该变量分配一点内存。因此,2 个变量将占用大约两倍的内存。最好使用相同的变量 Case B,因为它只使用 1 个变量所需的内存。
它们都将以相同的方式影响处理器。但是,案例 B 中的内存使用量会更低,因为您将现有变量更新为新数组。
如果这不是PHP,而是像C这样的"低级"语言,答案很简单:
- 速度会稍微高一些(直接将结果重写到内存中的目标位置,跳过重写指针)
- 在内存方面会稍微更有效(临时位置在操作后立即释放分配操作的右侧和左侧之间保存结果,只有一个变量永久分配。
由于PHP是一种脚本语言,从长远来看,我只能说B可能会稍微保守一些内存,但数量确实微不足道。除此之外,所有的赌注都关闭了,写一个基准。