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

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

Unix socket 'bỏ qua stack mạng nên nhanh hơn TCP' — huyền thoại không sống sót phép đo

Tưởng Unix socket nhanh hơn hẳn TCP loopback vì bỏ qua stack mạng? Tôi đo: độ trễ gần như hòa (~9,5µs mỗi chiều, cùng do chi phí đánh thức tiến trình), còn throughput TCP loopback thậm chí nhanh hơn. Unix socket vẫn hơn ở tính năng — không cổng, phân quyền file, truyền fd — chứ không phải tốc độ.

Cơ sở dữ liệu 03/09/2026 8 phút

'CTE luôn chậm hơn subquery' — lời khuyên đúng năm 2018, sai 720 lần trên PostgreSQL đời mới

Mang niềm tin cũ 'CTE là hàng rào tối ưu, luôn chậm hơn subquery', tôi viết CTE thường rồi ngồi đợi nó chậm. Đo ra nhanh y hệt subquery — 0,134ms, index scan — vì từ PG12 CTE được inline. Chỉ khi ép AS MATERIALIZED thì hàng rào cũ mới trở lại: 95ms, chậm 720 lần cho cùng logic. Vì sao một luật hiệu năng hết hạn theo phiên bản.

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

Ở 10.000 kết nối, epoll nhanh gấp 1.540 lần poll — vì một cái là O(N), cái kia O(1)

Tưởng select, poll, epoll như nhau chỉ khác cú pháp API? Tôi đo: select/poll là O(N) — quét cả danh sách fd mỗi lần, poll bung từ 1,9µs (100 fd) lên 203µs (10.000 fd); epoll O(1) phẳng ~130ns bất kể N, nhanh gấp 1.540 lần ở 10.000 fd. Bề mặt giống nhau, độ phức tạp thì không.

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

'Code tôi scale 8 lần trên 8 lõi' — 8 lần so với cái gì? Chọn sai mẫu số, con số nói dối

Tưởng speedup = thời gian 1 luồng / N luồng là đủ, và scaling tuyến tính tới số lõi? Tôi đo: 10 lõi chỉ cho 4,65x (không phải 10x), và nếu lấy baseline sai (bản song song 1 luồng thay vì tuần tự tốt nhất) thì con số bị thổi phồng đều 6,2 lần. Speedup là một phân số, và mẫu số nào cũng nói dối được.

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

Lock-free nhanh gấp 3 lần mutex — cho tới khi 8 producer khiến nó thua ngược

Tưởng lock-free luôn nhanh hơn có khóa nên cứ bỏ mutex đi? Tôi đo: hàng đợi SPSC lock-free nhanh hơn mutex 3 lần vì hai bên ghi hai chỉ số riêng không tranh; nhưng nhiều producer cùng đẩy vào một hàng đợi thì ở 8 producer lock-free lại thua mutex, vì đụng đúng bức tường cache. Lock-free nhanh khi không có ghi chung, và cái giá là code khó viết đúng.