Performance tips questions
android, java
Solution
Well I guess this is because at `zero`, he always needs to retrieve the information from `mArray` and in `one`, he has it accessible. This means, `zero` needs two "methods":
- Access mArray
- Access mArray.length
But `one` only needs one "methods":
- Access len
Problem
``` 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; } } ``` According to Android documentation, in above code, zero is slower. But I don't understand why ? well I haven't learn that much deep but as I know `length` is a field not method. So when loop retrieves its value, how its different from retrieving from local variable ? and array length is always fixed once initialized. What am I missing ?