我想优化下面非常简单的代码, 你有什么想法吗?
public void addValueToTab(int _valueToAdd){
for(int k=0; k < myArray.length; k++){
myArray[k]+= _valueToAdd;
}
}
myArray是一个int []
myArray的长度可以在50到1000之间变化。
非常感谢你的帮助,
答案 0 :(得分:5)
我敢打赌,使用服务器JVM和热门代码,你无法做任何事情来加速它(因为JVM已经完成了所有的优化)。特别是,myArray.length
被缓存在局部变量中,并且循环被多次展开。
如果您关心使用较弱的JIT编译器的性能,您可以手动执行上述两项操作,但为什么要关心?
有趣的是,有一个类似的循环,JVM非常松散:
for (int i = 0; i < value.length; i++) {
h = 31 * h + val[i];
}
这不是一个不重要的代码,它是String.hashCode
的主体。通过手动展开,您可以获得因子2 +的加速。