本文正在参加「Java主题月 – Java Debug笔记活动」,详情查看 活动链接
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