Good Day,Hiệu suất của tan rã một vòng thành hai vòng
Giả sử rằng bạn có một đơn giản cho vòng lặp như dưới đây ...
for(int i=0;i<10;i++)
{
//statement 1
//statement 2
}
Giả định rằng tuyên bố 1 và tuyên bố 2 là O (1). Bên cạnh các chi phí nhỏ của "bắt đầu" vòng lặp khác, sẽ phá vỡ mà cho vòng lặp thành hai (không lồng nhau, nhưng tuần tự) vòng được như nhau nhanh chóng? Ví dụ:
for(int i=0;i<10;i++)
{
//statement 1
}
for(int i=0;i<10;i++)
{
//statement 2
}
Tại sao tôi hỏi một câu hỏi ngớ ngẩn là tôi có hệ thống phát hiện va chạm (CDS) phải lặp qua tất cả các đối tượng. Tôi muốn "compartmentalize" chức năng của hệ thống CDS của tôi để tôi có thể chỉ cần gọi
cds.update(objectlist);
thay vì phải phá vỡ hệ thống CD của tôi. (Đừng lo lắng quá nhiều về việc thực hiện CDS của tôi ... Tôi nghĩ mình biết mình đang làm gì, tôi không biết giải thích nó như thế nào, những gì tôi thực sự cần biết là nếu tôi thực hiện một hit hiệu suất lớn để lặp lại thông qua tất cả các đối tượng của tôi một lần nữa .
Như stefaanv ghi chú khác, chi phí lặp qua tất cả đối tượng của bạn một lần thứ hai là không xác định với các thông tin bạn đã đưa ra. – patrickn
Tôi cũng lưu ý rằng hai cấu trúc điều khiển mà bạn đã đăng giải quyết các vấn đề khác nhau và do đó không dễ dàng so sánh trong bối cảnh hiệu suất. – patrickn
Nếu không biết thêm chi tiết và không có phép đo thực tế, không thể nói phiên bản nào nhanh hơn. Caching, cả dữ liệu và hướng dẫn, cũng như dự đoán nhánh (và -tables) và thực thi đầu cơ thêm rất nhiều phức tạp cho tối ưu hóa ngày nay. Điểm tốt mặc dù tối ưu hóa sớm. Đo lường đầu tiên trong thế giới thực, sau đó tối ưu hóa. –