在循环之前或循环中声明变量之间的区别?| Java Debug 笔记

本文正在参加「Java主题月 – Java Debug笔记活动」,详情查看 活动链接

原问题地址:stackoverflow.com/questions/4…

Q:

我一直想知道,一般而言,在循环之前声明一个抛弃型变量(而不是在循环内部重复声明)是否会产生(性能)差异?

Java中的一个例子:

a:循环前声明:

double intermediateResult;
for(int i=0; i < 1000; i++){
    intermediateResult = i;
    System.out.println(intermediateResult);
}

复制代码

b:循环内声明(反复):

for(int i=0; i < 1000; i++){
    double intermediateResult = i;
    System.out.println(intermediateResult);
}
复制代码

上面a和b哪个更好?

我怀疑重复变量声明(示例b)在理论上会产生更多开销,但是编译器足够聪明,因此无关紧要。示例b的优点是更紧凑,并将变量的范围限制在使用它的地方。尽管如此,我还是倾向于根据示例a进行编码。

说明:我对Java案例特别感兴趣。

A:

a或b哪个更好?

从性能的角度来看,您必须对其进行评估。 (我认为,如果您可以衡量差异,那么编译器就不是很好)。

从维护的角度来看,b更好。在尽可能小的范围内,在同一位置声明和初始化变量。不要在声明和初始化之间留有缝隙,也不要污染不需要的名称空间。

Other

#224

好吧,我分别运行了您的A和B示例20次,循环了1亿次。(JVM-1.5.0)

a:平均执行时间:.074秒

b:平均执行时间:.067秒

令我惊讶的是,B的速度稍快一些。现在很难说出与计算机一样快的速度,如果您可以准确地进行测量的话。我也将用A方式进行编码,但我说这并不重要。

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享