VÌ SAO DUYỆT MẢNG THEO DÒNG LẠI NHANH HƠN THEO CỘT?

Mình vừa viết một chương trình nhỏ, chỉ để tính tổng các ô trong một ma trận, tuy nhiên khi thử duyệt theo dòng thì luôn thấy nhanh hơn cột, mảng càng lớn tốc độ càng khác biệt.Các bạn có thể tải về chương trình tại ( https://github.com/namdotnet/clancetest) và chạy thử xem có đúng không, và mất bao nhiêu tick mỗi bước, laptop mình đang dùng chạy Xeon mất hơn 600 ticks cho bước 1.

Nếu nhiều người ủng hộ thì mình sẽ giải thích lý do tại sao 😉(ghi chú là trong ví dụ này mình gọi dòng trước cột sau nhé int m[ROWS][COLS]).

Comments

4 responses to “VÌ SAO DUYỆT MẢNG THEO DÒNG LẠI NHANH HƠN THEO CỘT?”

  1. […] nhanh hơn (do tận dụng được cache). Các bạn có thể tham khảo bài viết này: VÌ SAO DUYỆT MẢNG THEO DÒNG LẠI NHANH HƠN THEO CỘT? và GIẢI THÍCH: Vấn đề nằm ở […]

  2. Anonymous

    Em nhớ địa chỉ của phần tử m[i][j] là (*(m+i)+j) nên khi để thằng j (cột) chạy hết thì cho địa chỉ liên tục còn khi cho i chạy trước thì không còn liên tục nữa ạ

  3. namdh

    Anh có bài trả lời ở đây nhé: https://daohainam.com/2021/12/30/giai-thich-van-de-nam-o-cpu-cache/

Leave a Reply

Discover more from Đào Hải Nam blog

Subscribe now to keep reading and get access to the full archive.

Continue reading