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

Bung vòng lặp 8 lần mà không nhanh hơn một tí nào?

Bung vòng lặp (unroll) luôn làm code nhanh hơn vì cắt chi phí vòng? Đo trên host ARM: bung một vòng cộng mảng 1x/2x/4x/8x với một biến tích lũy cho thời gian y hệt nhau — 0,2136 ns mỗi phần tử, không đổi, vì lõi out-of-order đã giấu hết chi phí vòng. Cái thật sự giúp là phá chuỗi phụ thuộc bằng nhiều biến độc lập (3,5 lần), còn khi memory-bound thì unroll vô ích. Và -O3 tự vector hóa còn nhanh hơn bung tay.

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 9 phút

Con sông sâu trung bình 1 mét vẫn dìm chết người: vì sao 'latency trung bình' nói dối

Tưởng throughput cao là hệ nhanh, và đo latency bằng trung bình là đủ? Tôi đo từng thao tác dưới tranh chấp: throughput và latency là hai thứ khác nhau có thể cùng tệ đi, và latency là một phân phối lệch — ở 8 luồng trung vị chỉ 125ns nhưng p99 vọt lên 32.292ns, gấp 258 lần. Trung bình giấu cái đuôi mà người dùng thật sự gặp.

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

Trie không 'tốt hơn' hash — nó làm được thứ hash chịu thua

Trie luôn tốt hơn hash cho chuỗi? Tôi đo thử: trie tốn RAM gấp 11 lần hash (256 MB vs 23 MB) và exact match chỉ ngang nhau. Nhưng trie thắng tuyệt đối một việc hash không làm nổi: tra tiền tố / autocomplete — 94 lần nhanh hơn, vì hash phải quét toàn bộ tập. Chọn theo có cần prefix hay không.

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

Bật -O3 nhanh gấp 4 lần — rồi đổi một dấu, tụt xuống chậm gấp 11

Bật -O3, vòng nhân mảng float nhanh 3,9 lần nhờ NEON làm 4 float mỗi lệnh. Nhưng chỉ thêm một phụ thuộc chuỗi là trình biên dịch lặng lẽ bỏ vector hóa, tụt về scalar chậm 11,6 lần — không một dòng cảnh báo. SIMD không phải phép màu của cờ, mà là phần thưởng cho vòng viết đúng dạng. Tôi đo.