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;
}
}
Theo Android documentation, ở mã trên, số không là chậm hơn. Nhưng tôi không hiểu tại sao? tôi cũng chưa học được nhiều điều sâu sắc nhưng như tôi biết length
là một lĩnh vực không phải là phương pháp. Vì vậy, khi vòng lặp truy xuất giá trị của nó, sự khác biệt của nó khi lấy ra từ biến cục bộ như thế nào? và độ dài mảng luôn cố định khi được khởi tạo. Tôi đang thiếu gì?Câu hỏi về mẹo hiệu suất
Cho đến khi JIT tối ưu hóa mã, ví dụ đầu tiên có nhiều việc phải làm trên mỗi vòng lặp. Khi mã đã được biên dịch, nó phải giống nhau. (Đó là trên OpenJDK) –