相关疑难解决方法(0)

在循环之前或循环中声明变量之间的区别?

我一直想知道,一般来说,在循环之前声明一个抛弃变量,而不是在循环内部重复,是否会产生任何(性能)​​差异?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案件特别感兴趣.

java variables performance loops initialization

307
推荐指数
14
解决办法
13万
查看次数

在循环内部或外部声明变量是否更好?

最好做的是:

variable1Type foo; 
variable2Type baa; 

foreach(var val in list) 
{
    foo = new Foo( ... ); 
    foo.x = FormatValue(val); 

    baa = new Baa(); 
    baa.main = foo; 
    baa.Do();
}
Run Code Online (Sandbox Code Playgroud)

要么:

foreach(var val in list) 
{
    variable1Type foo = new Foo( ... ); 
    foo.x = FormatValue(val); 

    variable2Type baa = new Baa(); 
    baa.main = foo; 
    baa.Do();
}
Run Code Online (Sandbox Code Playgroud)

问题是:什么是更快的1例或2例?区别是微不足道的吗?它在实际应用中是否相同?这可能是一个优化微观,但我真的想知道哪个更好.

.net c# scope

31
推荐指数
1
解决办法
1万
查看次数

在Lua中,我应该在循环的每次迭代或循环之前定义变量吗?

特别是在Lua中,这样做会对我造成任何伤害:

for i = 1, 10 do
    local foo = bar()
    -- do stuff with foo
end
Run Code Online (Sandbox Code Playgroud)

而不是这个:

local foo
for i = 1, 10 do
    foo = bar()
    -- do stuff with foo
end
Run Code Online (Sandbox Code Playgroud)

我的意思是,Lua会尝试为foo每次迭代分配新的内存吗?第一个块会导致执行速度变慢吗?

performance lua loops memory-management

4
推荐指数
1
解决办法
942
查看次数