访问局部变量与场的效率?

时间:2017-03-16 12:06:34

标签: java variables optimization reference

我读到你应该避免在方法中经常引用一个字段,而只是做一次,将它分配给一个局部变量,例如:

public static void doSomething() {
    final Map<String, Integer> myMap = this.theMap;
    //do some processing with myMap
}

效率的原因是,每次访问现场只需要更长的时间。这是你应该担心的吗?

2 个答案:

答案 0 :(得分:0)

这绝对是错误的。

访问变量(本地或使用类'成员)完全没有区别。最后,两个字段只包含对内存中相同位置的引用,而不会对性能产生任何影响。即使在类字段中使用getter也没有区别,因为一旦注意到这可能会提高性能,JIT编译器就会内联方法调用。

答案 1 :(得分:0)

优化:它没有做任何事情。任何好处(如果有的话)也将由优化器提供。

只有编码人才能获得好处,因为能够以不同的方式命名,以便更好地了解方法的目的。

public function test() {
    Produce harvestedFruits = this.produce;
    for(Produce fruit : harvestedFruits ) {
       if(fruit.isRotten()) {
             harvestFruits.remove(fruit);
       }
    }
}

即便如此,我建议使用getter和setter方法,因此扩展函数可以做自己的事情,测试变得更容易,并且使用文档,当在相对高级的IDE中将鼠标悬停在方法上时,您提供了很好的亮点< / p>

  Produce fruit = this.getProduce();