thể trùng lặp:
Why is my program slow when looping over exactly 8192 elements?thay đổi tốc độ truy cập mảng C++ 2d dựa trên thứ tự [a] [b]?
tôi đã mày mò xung quanh với một chương trình mà tôi đang sử dụng chỉ đơn giản là tổng hợp các yếu tố của một mảng 2ngày. Một lỗi đánh máy dẫn đến những gì dường như với tôi ít nhất, một số kết quả rất lạ.
Khi giao dịch với mảng, ma trận [SIZE] [SIZE]:
for(int row = 0; row < SIZE; ++row)
for(int col = 0; col < SIZE; ++col)
sum1 += matrix[row][col];
Chạy rất nhanh chóng, tuy nhiên là dòng trên sum1 ... được sửa đổi:
sum2 += matrix[col][row]
Như tôi đã làm một lần bị tai nạn mà không nhận ra nó, tôi nhận thấy rằng thời gian chạy của tôi tăng đáng kể. Tại sao điều này?
Vị trí bộ nhớ cache. –
** Không bao giờ ** dịch theo nghĩa đen mã FORTRAN có mảng và vòng lặp vào C/C++! –