我一直想知道,一般来说,在循环之前声明一个抛弃变量,而不是在循环内部重复,是否会产生任何(性能)差异?Java中的一个(毫无意义的)示例:
a)循环前的声明:
double intermediateResult;
for(int i=0; i < 1000; i++){
intermediateResult = i;
System.out.println(intermediateResult);
}
Run Code Online (Sandbox Code Playgroud)
b)声明(重复)内循环:
for(int i=0; i < 1000; i++){
double intermediateResult = i;
System.out.println(intermediateResult);
}
Run Code Online (Sandbox Code Playgroud)
哪一个更好,一个还是b?
我怀疑重复变量声明(例子b)在理论上会产生更多的开销,但是编译器足够聪明,所以它并不重要.实施例b具有更紧凑的优点,并且将变量的范围限制在其使用的位置.尽管如此,我倾向于根据示例来编码一个.
编辑:我对Java案件特别感兴趣.
有多少GCC优化级别?
我尝试了gcc -O1,gcc -O2,gcc -O3和gcc -O4
如果我使用一个非常大的数字,它将无法正常工作.
但是,我试过了
gcc -O100
Run Code Online (Sandbox Code Playgroud)
并编译.
有多少优化级别?