Trong trường hợp này, nó giống nhau. Sử dụng phạm vi nhỏ nhất có thể cho mã dễ đọc nhất.
Nếu int
là một lớp có hàm tạo và phá hủy đáng kể, thì đầu tiên (khai báo bên ngoài vòng lặp) có thể tiết kiệm đáng kể - nhưng bên trong bạn thường cần tạo lại trạng thái ... vì vậy đôi khi nó kết thúc không tiết kiệm chút nào.
Một trường hợp có thể tạo sự khác biệt là vùng chứa. Một chuỗi hoặc vector sử dụng bộ nhớ trong được tăng lên để phù hợp với kích thước của dữ liệu mà nó đang lưu trữ. Bạn có thể không muốn xây dựng lại vùng chứa này mỗi lần thông qua vòng lặp, thay vào đó, chỉ cần xóa nội dung của nó và nó có thể không cần nhiều bản phân phối bên trong vòng lặp. Điều này có thể (trong một số trường hợp) dẫn đến cải thiện hiệu suất đáng kể.
Các mấu chốt là viết rõ ràng, và nếu hồ sơ cho thấy vấn đề, di chuyển nó ra :)
Vâng, nó chỉ bằng hiệu quả nếu trình biên dịch của bạn không có biến số ngăn xếp. –
Tôi không lo lắng nhiều với hiệu quả lúc đầu, nhưng khả năng đọc là một phí bảo hiểm. Khi nó hoạt động, nếu nó quá chậm, thì đã đến lúc lập hồ sơ và tối ưu hóa những gì có thể. –