声明一个变量是否会产生开销?

5
我的主管总是要求我尽可能减少新变量的使用,称其会增加开销。然而,我不确定这是否会实际降低性能。如果有的话,创建新变量会提高代码的可读性。那么,这样做会实际上恶化性能吗?

选项1:

var a = something1();
var b = something2();
var c = something3();
var d = something4(a, b, c);

选项2:将其减少成为一行代码。

var d = something4(something1(), something2(), something3());

请注意:有时候,这会变得复杂,可读性会降低。


5
这是最糟糕的过早优化。做最易读的事情。当你测量过开销并显示它正在引起问题时,再担心这个开销。他们的压缩建议很糟糕。 - Carcigenicate
您可以将该函数调用分多行包装,以提高可读性并减少额外的开销(这可能只是额外的心理解析)。 - Emile Bergeron
2
这是主观的,但我发现选项1的可读性要差得多。 - georg
3个回答

1

严格来说,变量确实会使用资源(内存或处理器)。但仅凭这一点并不意味着它是不好的或浪费的。使用变量可以使您的代码更易读和/或存储需要重复使用的数据。

稍后,在进行质量保证时,您可以担心优化问题。在软件开发中有一个非常著名的口号,即在最初编写代码时尝试优化代码通常会导致更多问题。

但我必须说,如果将某些内容放入变量中导致性能受到影响,那么您需要担心其他问题。


0
如果您只使用变量一次,请将其删除。如果使用2次或更多,则声明变量。 在这种情况下,只有当太多的执行使调试棘手时,才能声明变量。因此,如果操作适合一行-最好使用选项2 性能不会受到影响。只是可读性也可能受到过多变量的影响。

4
我甚至不一定同意那种说法。如果一个计算变得很长,使用一个命名清晰的中间变量来拆分它可以大大提高可读性。当一个代码行变得复杂时,我个人会在各个地方使用单次使用的中间变量。 (虽然我没有点踩。但是可能被点踩是因为它实际上并没有回答问题)。 - Carcigenicate
@Carcigenicate同意,因此我提到了保持一致性。因为即使调试也可能很棘手。但在我看来,太多简单变量会进一步降低可读性。 - Alex Vovchuk

0

对于性能而言,这两个选项几乎相同。使用选项2时,所有函数调用都会计算到一个隐藏的内部存储空间中,该空间绑定到函数参数。这几乎等同于在选项1中分配变量。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接