我正在为我的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
何时何地正在更新。
答案 0 :(得分:1)
这种变化不会对绩效产生任何明显的影响,既不积极也不消极。所以,只要没有深刻的理由,你就不应该改变它。
关于你的问题
使用第二种情况可能会产生什么负面影响?
您应该知道,在多线程环境中,两个实现可能的行为方式不同。在第一种情况下,将考虑可由任何其他线程完成的向量的更改,并且可能影响循环运行的次数。在第二种情况下,循环的运行次数计算一次,并且稍后不会改变(即使向量的大小改变)。但是,在使用任何两个循环迭代它时,更改向量的内容是危险的,应该尽可能避免
BTW:来自@geoand的评论中链接的基准与微基准测试一样有缺陷。这并没有告诉你任何事情。