Giải thuật 03/09/2026 5 phút

Hàm ảo chậm hay không, hóa ra tùy một điều bạn ít để ý

Nhiều người né hàm ảo ở đường nóng vì nghe nói nó tốn hai lần đọc bộ nhớ cộng một cú gọi gián tiếp. Nhưng đo ra, cùng một dòng obj->f(), lúc thì nhanh y như gọi thường, lúc lại chậm gần 7 lần — và cái quyết định không phải bản thân virtual, mà là các đối tượng bạn duyệt có cùng kiểu hay trộn loạn.

Giải thuật 03/09/2026 5 phút

memcpy nhanh gấp 15 lần cái vòng for bạn tự viết — và tốc độ nó không phải một con số

Nhìn thì memcpy chỉ là chép một dãy byte, viết tay bằng vòng for cũng ra thế. Nhưng đo ra memcpy nhanh gấp 15 lần cái vòng đó, và tốc độ của nó còn nhảy múa gấp 40 lần tùy khối to hay nhỏ. Một hàm tưởng tầm thường mà giấu cả một đường cong hiệu năng.

Giải thuật 03/09/2026 5 phút

Căn lề dữ liệu: nỗi sợ của dân x86 mà ARM gần như chẳng thèm quan tâm

Ai cũng dặn phải căn lề dữ liệu kẻo truy cập bộ nhớ chậm. Nhưng đo trên ARM, đọc lệch — kể cả cắt ngang dòng cache — nhanh y hệt căn lề. Chỉ có đúng một chỗ khiến nó lết: khi 8 byte vắt qua ranh giới trang, chậm gần 30 lần. Cái x86 bắt bạn sợ với cái thật sự nguy hiểm hóa ra không phải một.

Giải thuật 03/09/2026 6 phút

Đổi hai dòng vòng lặp, nhân ma trận nhanh gấp 3 mà không thêm phép tính nào

Cùng một phép nhân ma trận, cùng đúng 2,1 tỷ phép nhân-cộng, tôi chỉ hoán vị hai vòng lặp mà tốc độ nhảy từ 2,65 lên 8,13 GFLOP/s. Không phải phép màu — là cache. Big-O đếm số phép, nhưng cách bạn đi qua dữ liệu mới là thứ quyết định code chạy nhanh hay lết.