性能提示问题

xme*_*men 5 java android

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;
    }
}
Run Code Online (Sandbox Code Playgroud)

根据Android文档,在上面的代码中,零更慢.但我不明白为什么?好吧,我还没有那么深入,但据我所知length,这不是一个方法.所以当循环检索它的值时,它与从局部变量检索的不同之处是什么?一旦初始化,数组长度总是固定的.我错过了什么?

Mal*_*aKa 8

嗯,我想这是因为zero,他总是需要从检索信息mArray并在one,他有它访问.这意味着,zero需要两个"方法":

  1. 访问mArray
  2. 访问mArray.length

one只需要一个"方法":

  1. 访问len