Một mẫu rất phổ biến trong lập trình là giới hạn giá trị tối đa sau một số loại cập nhật. Những gì tôi muốn biết là nếu có sự khác biệt giữa hai miếng mã sau đây, và nếu một nên được ưa thích:Trong C++, tốt hơn là giới hạn giá trị sử dụng std :: min hoặc một nhánh?
value += increment;
value = std::min(value, valueMax);
vs
value += increment;
if (value > valueMax)
value = valueMax;
suy nghĩ của tôi là điều này đi xuống cho dù CPU có hướng dẫn lấy hai giá trị và sản xuất minumum. Nếu vậy, lệnh gọi lệnh std :: min sẽ dẫn đến lệnh này và tránh một nhánh không cần thiết. Nếu không, phiên bản thứ hai sẽ tránh được việc gán không cần thiết khi giá trị < = valueMax.
Tôi không phải là người rất tốt với loại điều này, nhưng tôi chắc chắn rằng có những tin tặc lắp ráp trường học cũ, những người sẽ biết điều này. Đối với họ tôi hỏi: cái nào tốt hơn?
Hãy thử cả hai và xem hội đồng ... – Mysticial
Tôi muốn nói phiên bản đầu tiên sẽ luôn hoạt động * ít nhất * cũng như phiên bản thứ hai, vì vậy không có lý do gì để không sử dụng nó. Phiên bản đầu tiên có thể * cũng * nhanh hơn, mặc dù không có gì đảm bảo về điều đó. –
Giống như bí mật ngụ ý, nó phụ thuộc vào việc thực hiện std :: min (http://en.cppreference.com/w/cpp/algorithm/min). – DavidA