tôi không thể tìm thấy tài liệu tham khảo trực tuyến (có lẽ tôi đọc nó trong một cuốn sách), nhưng đã có một ví dụ về một số cuộc gọi BIOS đó đã viết một String để màn hình.
Mã đã viết chuỗi vào màn hình được chọn để đảm bảo rằng Chuỗi sẽ không tắt màn hình và sau đó được gọi là một hàm để ghi ra một char vào màn hình.
Chức năng ghi ký tự char vào màn hình được chọn để đảm bảo rằng ký tự đó sẽ không bị xóa khỏi màn hình.
Xóa mã kiểm tra khỏi chức năng đã viết ký tự vào màn hình dẫn đến tăng tốc độ lớn. Đó là vì in mỗi nhân vật đã xảy ra rất thường xuyên. Họ cũng cung cấp một phương pháp đã kiểm tra các trường hợp khi vị trí màn hình không được kiểm tra trước cuộc gọi.
Vì vậy, nếu bạn có thể kiểm tra ở mức cao và tránh kiểm tra ở mức thấp, bạn có thể tăng tốc độ đáng kể.
Trong trường hợp bạn cung cấp, nếu mã là trong một vòng lặp hoặc nếu có rất nhiều báo cáo khai thác gỗ sau đó sẽ có một lợi ích rõ ràng kể từ khi bạn sẽ:
- loại bỏ việc tạo ra chuỗi (và GC liên quan)
- giảm số lượng câu lệnh if (mặc dù hotspote rất có khả năng tối ưu hóa chúng).
Tôi sẽ nói rằng, nói chung, bạn không nên thêm bất kỳ thứ gì được biết là tốn kém nếu có công việc dễ dàng. Điều này rõ ràng rơi vào trường hợp đó - việc bổ sung câu lệnh if không phải là khó làm, nó là một nỗi đau để đưa vào sau này, và nó cung cấp một cải thiện tốc độ/bộ nhớ xác định.
Tôi nghĩ rằng sự khác biệt giữa tối ưu hóa này và sớm là điều này được biết là luôn luôn tốn kém, do đó, vấn đề đi xuống đến nó là một chi phí tích lũy bạn muốn thêm vào chương trình hay không? Chi phí là khá nhiều không đổi và nó được biết đến tại thời điểm viết mã.
Rõ ràng là nếu tác giả đã đặt câu hỏi này thì đó là lời kêu gọi anh ta thực hiện tối ưu hóa. I E. khi bạn được yêu cầu tối ưu hóa một đoạn mã, bạn không trả lời bằng hai dấu ngoặc kép ở trên. Hiểu bạn đến từ đâu nhưng nó không giúp đỡ trong tình huống này. –
-1 từ tôi. tôi ghét câu thần chú "không làm tối ưu hóa" này. Nó là thiếu sót nghiêm trọng - nếu tối ưu hóa của bạn * sẽ cho kết quả (thậm chí tầm thường) và nó gần như là * free * (vì đây là, 'if' statement là tầm thường) và nó không phức tạp (và gói một câu lệnh log trong một nếu chỉ là tầm thường nhất) sau đó chỉ cần đi trước và làm điều đó. – bharal
Không đồng ý, điều này nằm trong tĩnh mạch của một hoạt động kiểm tra để tránh rắc rối, có thể dễ dàng được truyền đạt tới một nhà phát triển cơ sở, để họ sẽ không tự động giới thiệu một số lỗi. – ammianus