我一直想知道,一般来说,在循环之前声明一个抛弃变量,而不是在循环内部重复,是否会产生任何(性能)差异?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案件特别感兴趣.
我只是想知道如果你做了这样的事情会有任何速度或效率的损失:
int i = 0;
while(i < 100)
{
int var = 4;
i++;
}
Run Code Online (Sandbox Code Playgroud)
宣告int var一百次.在我看来会有,但我不确定.这样做会更实际/更快:
int i = 0;
int var;
while(i < 100)
{
var = 4;
i++;
}
Run Code Online (Sandbox Code Playgroud)
或者它们是相同的,速度和效率方面的?
我相信我已经理解了,但我只是想确认一下。如果我有两个功能,
function A()
{
const Vector3D vectorA(1.0f);
...
}
function B(float var)
{
const Vector3D vectorB(1.0f + var);
...
}
Run Code Online (Sandbox Code Playgroud)
在 function 的情况下,无论调用多少次A(),都vectorA只会在程序中构造一次A()?我相信编译器隐式声明它是静态的吗?但是在 的情况下B(),vectorB每次函数调用都需要重构吗?