在travessing for循环时使用tmp变量的缺点

时间:2014-05-02 17:56:08

标签: java

我正在为我的java应用程序做一些性能优化,我很困惑使用tmp变量来删除循环终止中的方法调用。这是我的情况:

Vector myVector = new Vector();
// some code
for (int i=0;i<myVector.size();i++){
//some code here;
}

我想用

int tmp = myVector.size();
for(int i=0;i<tmp;i++){
//some code here
}

What would be negative impact of using second scenario ?我的应用程序非常庞大,我不确定myVector何时何地正在更新。

1 个答案:

答案 0 :(得分:1)

这种变化不会对绩效产生任何明显的影响,既不积极也不消极。所以,只要没有深刻的理由,你就不应该改变它。

关于你的问题

  

使用第二种情况可能会产生什么负面影响?

您应该知道,在多线程环境中,两个实现可能的行为方式不同。在第一种情况下,将考虑可由任何其他线程完成的向量的更改,并且可能影响循环运行的次数。在第二种情况下,循环的运行次数计算一次,并且稍后不会改变(即使向量的大小改变)。但是,在使用任何两个循环迭代它时,更改向量的内容是危险的,应该尽可能避免

BTW:来自@geoand的评论中链接的基准与微基准测试一样有缺陷。这并没有告诉你任何事情