public void zero() {
int sum = 0;
for (int i = 0; i < mArray.length; ++i) {
sum += mArray[i].mSplat;
}
}
public void one() {
int sum = 0;
Foo[] localArray = mArray;
int len = localArray.length;
for (int i = 0; i < len; ++i) {
sum += localArray[i].mSplat;
}
}
根据 Android documentation ,在上面的代码中,零速度较慢。但我不明白为什么?好吧,我还没有学到那么深,但据我所知,length
是一个字段而不是方法。那么当循环检索它的值时,它与从局部变量中检索有何不同?并且数组长度在初始化后始终是固定的。我错过了什么?
最佳答案
嗯,我想这是因为在零
时,他总是需要从mArray
中检索信息,而在一
时,他可以访问它.这意味着,zero
需要两个“方法”:
- 访问 mArray
- 获取mArray.length
但是一个
只需要一个“方法”:
- 访问len
关于java - 性能提示问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18206197/