Bạn nên tránh tất cả các tối ưu hóa nếu niềm tin duy nhất mã bạn đang tối ưu hóa sẽ chậm. Mã duy nhất bạn nên tối ưu hóa là khi bạn biết nó là chậm (tốt hơn thông qua một hồ sơ).
Nếu bạn viết mã rõ ràng, dễ hiểu thì tỷ lệ cược sẽ đủ nhanh, và nếu không thì khi bạn tăng tốc nó sẽ dễ làm hơn.
Điều đó đang được nói, thông thường nên áp dụng (!). Bạn có nên đọc lại một lần nữa hay bạn nên lưu lại kết quả? Có lẽ là bộ nhớ cache kết quả. Vì vậy, từ quan điểm kiến trúc mức cao, bạn nên suy nghĩ về tối ưu hóa.
Phần "tà ác" của tối ưu hóa là "tội lỗi" được cam kết trong tên làm một cái gì đó nhanh hơn - những tội lỗi này thường dẫn đến mã rất khó hiểu. Tôi không chắc chắn 100% đây là một trong số họ ..nhưng nhìn vào this question here, điều này có thể hoặc không thể là một ví dụ về tối ưu hóa (có thể là cách mà người đó nghĩ đến), nhưng có nhiều cách rõ ràng hơn để giải quyết vấn đề hơn những gì đã được chọn.
Một điều bạn có thể làm, mà gần đây tôi đã làm, là khi bạn đang viết mã và bạn cần quyết định cách làm một cái gì đó ghi cả hai cách và chạy nó thông qua một hồ sơ. Sau đó chọn cách rõ ràng nhất để mã hóa nó trừ khi có sự khác biệt lớn về tốc độ/bộ nhớ (tùy thuộc vào bạn đang làm gì). Bằng cách đó bạn không đoán được những gì "tốt hơn" và bạn có thể ghi lại lý do tại sao bạn đã làm theo cách đó để một người nào đó không thay đổi nó sau này.
Trường hợp mà tôi đang làm đang sử dụng các tệp ánh xạ bộ nhớ -v-stream I/O ... tệp ánh xạ bộ nhớ nhanh hơn đáng kể so với cách khác, vì vậy tôi không quan tâm liệu mã có khó theo dõi hay không (không phải) vì tốc độ tăng lên đáng kể.
Một trường hợp khác mà tôi đã quyết định là chuỗi "thực tập" trong Java hay không. Làm như vậy sẽ tiết kiệm không gian, nhưng với chi phí thời gian. Trong trường hợp của tôi tiết kiệm không gian không lớn, và thời gian đã tăng gấp đôi, vì vậy tôi đã không thực tập. Tài liệu cho phép người khác biết không làm phiền việc thực tập nó (hoặc nếu họ muốn xem phiên bản Java mới hơn có làm cho nó nhanh hơn thì họ có thể thử).
Wiki cộng đồng ?? –
Trong ví dụ của bạn, có bất biến vòng lặp bên trong vòng lặp là thực hành lập trình kém và cần được ghi lại lý do tại sao nó nằm trong vòng lặp cho một vài trường hợp ngoại lệ, nơi nó có thể cần thiết. – Elie