Bài viết mới nhất

Tổng 1823 bài
Giải thuật 03/09/2026 8 phút

256 nhánh if-else chậm hơn bảng nhảy 121 lần — nhưng 4 nhánh thì không

Nhiều if-else cũng nhanh như switch, compiler lo hết? Tôi đo thử: chuỗi quét tuyến tính là O(N) — 256 nhánh mất 35,57ns còn bảng nhảy 0,24ns, chậm 121 lần. Nhưng ở 2-4 nhánh, if-else viết tay ngang bảng, và phân bố lệch làm branch prediction gần miễn phí. Đây là một điểm giao, không phải câu trả lời một chiều.

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

'Random Access Memory' mà truy cập ngẫu nhiên chậm 423 lần: sức mạnh prefetch

Tưởng truy cập RAM nào cũng như nhau (Random Access Memory), và prefetch chỉ giúp đọc stride 1? Tôi đo thử: duyệt mảng tuần tự 0,28ns/phần tử vs ngẫu nhiên 107ns — chênh 423 lần, vì prefetcher phần cứng chỉ đoán được mẫu ĐỀU; cái giết nó là tính không đoán được, không phải khoảng cách.

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

Thêm luồng CPU-bound làm chậm gấp 4 — 1843 lần bị tước CPU dù không luồng nào block

Tưởng context switch chỉ xảy ra khi luồng block, và sched_yield giúp chạy nhanh hơn? Tôi đo: workload CPU thuần không hề block vẫn bị tước CPU cưỡng bức (nivcsw 0→1843 khi luồng vượt số lõi), thời gian tăng gấp 2–4 lần — còn yield một mình chỉ là một syscall 150ns vô ích.

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

Gom 256 ghi rồi fsync một lần: nhanh 125 lần mà vẫn bền — 'an toàn hay nhanh' là câu hỏi sai

Tưởng phải chọn giữa an toàn (fsync mỗi ghi) và nhanh (không fsync)? Tôi đo: gom 256 ghi rồi fsync một lần cho 194 nghìn ghi/giây — nhanh 125 lần fsync-mỗi-ghi — mà vẫn bền. Chi phí fsync tính theo mỗi lần gọi, không theo lượng byte, nên group commit phá thế lưỡng nan.