繁体   English   中英

多次初始化一个变量而不是重新分配一个变量是否效率低下?

[英]Is it inefficient to initialize a variable multiple times rather than reassigning one?

我正在构建一个应用程序,我必须在其中循环一组对象,并且对于每个对象我都调用一个助手 function。

在那个助手 function 中,我需要将一个变量传递给另一个助手 function。

我的问题是,每次都在第一个助手 function 中初始化该变量是不好的做法吗?

基本上:

示例 1:在 funcA 中初始化 b

funcA(byte[] bytes) {
    ...
    byte b = bytes[0];
    funcB(b);
}

while(...) {
    byte[] bytes;
    funcA(bytes);
}

或者

示例 2:在外部初始化 b 并重新分配

byte b;

funcA(byte[] bytes) {
    ...
    b = bytes[0];
    funcB(b);
}

while(...) {
    byte[] bytes;
    funcA(bytes);
}

哪个更好? (我调用 funcA 大约 20-30 次)我想我可以做funcB(bytes[0])但我想将它分配给一个变量以提高可读性。

每次都不要在帮助程序 function 中初始化该变量是不好的做法。

一般来说,变量应该定义在最窄的 scope 中。 仅在使用变量的地方定义变量而不在不使用变量时保留变量会更有效。 “在这里创建新变量”基本上是免费的; 它只是成为在堆栈上为此 function 分配的 memory 的一部分。

性能问题几乎不应该驱动您的系统设计。 首先确保您的代码从逻辑角度来看是有意义的并相应地实现它,然后测量实际执行时间、memory 使用情况等。

在您的情况下,应该在需要的地方定义和初始化该数组。 我假设您在其中传递了一些值,因此在while中声明它并进一步传递给funcA是完全有意义的。 如果您要将空的未初始化 object 传递给您的 function ,那么您很可能做错了什么,实际上没有必要在所有地方传递 object。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM