Tôi chưa bao giờ thấy một hướng dẫn hoặc một số bài giảng, trong đó cho thấy một cổ điển cho vòng lặp witout thứ tự post-increment.pre-increment vs post-increment - cho vòng lặp tốc độ
for (int i=0; i<array.length; i++) {}
Nếu bạn sử dụng POST-POST, biến "i" sẽ được lưu trong bộ nhớ cache, trước khi nó được tăng lên! Nhưng điều này không có ý nghĩa, bởi vì lệnh kết thúc trực tiếp.
Theo tôi, điều này làm cho ý nghĩa hơn:
for (int i=0; i<array.length; ++i) {}
Nếu bạn không hiểu cho đến bây giờ, tôi đi một chút nữa (sry cho tiếng anh của tôi):
Trong vòng đầu tiên :
- Cache giá trị thực của i. (Lưu ý: không di chuyển giữa, vì vậy không có lý do để làm điều này)
- Tăng i
- Đi trước
Trong vòng lặp thứ hai:
- Tăng i trực tiếp
- Go phía trước.
Vì vậy, vòng lặp thứ hai có hiệu suất cao hơn mà không làm giảm chất lượng. Có ý kiến nào khác không?
Cách duy nhất để biết liệu vòng lặp thứ hai có hiệu quả hơn hay không là đo nó (giả sử mã lắp ráp được tạo ra khác nhau). Với một 'int' tôi nghi ngờ nó tạo ra sự khác biệt. Với một số loại trình vòng lặp, có lẽ. ** Chỉnh sửa ** Tôi đang nói C++ ở đây. – juanchopanza
Khi bạn nói "biến * sẽ được lưu trong bộ nhớ cache *", bạn có sử dụng bất kỳ sự hiểu biết hoặc nghiên cứu nào về tình huống này hay bạn chỉ đang suy đoán? –
Tôi thấy một thẻ c + +, nhưng sau đó nó biến mất và tôi chỉ thấy java, vì vậy tôi đã đăng dup cho java. –