Hệ điều hành 03/09/2026 9 phút

Cùng một ống pipe: 3,3 MB/s hay 10 GB/s — chênh 3000 lần chỉ vì một lựa chọn bạn hay bỏ qua

Cùng một pipe: ghi từng byte cho 3,3 MB/s, ghi lô 64KB cho 10335 MB/s — nhanh gấp ~3000 lần. Con số nhỏ không đo pipe, nó đo phí syscall (strace: 1 triệu lệnh write so với 16). Thông lượng đạt đỉnh đúng ở cỡ lô bằng dung lượng pipe 64KB. Pipe không chậm; ghi-từng-byte mới chậm.

Hệ điều hành 03/09/2026 8 phút

Đọc đồng hồ nhanh hơn cả getpid — điều bất khả nếu nó là syscall, và bí mật nằm ở một trang nhớ nhân cho mượn

clock_gettime(MONOTONIC) tốn 13 ns, nhanh hơn cả getpid (100 ns) — bất khả nếu nó là syscall. strace: 0 lời gọi hệ thống, vì vDSO ánh xạ trang giờ của nhân vào user-space. Nhưng đồng hồ giờ-CPU thì 143 ns và 1 syscall mỗi lần: cùng một API, hai cơ chế, chênh 11 lần.

Trình biên dịch 03/09/2026 8 phút

Tôi chắc -Wall sẽ bắt lỗi nguy hiểm nhất — nó im re, và lý do nằm ngay trong tên cảnh báo

-Wall -Wextra bắt gọn bốn lỗi mà mã vẫn dịch trơn, exit 0. Nhưng lỗi dùng biến chưa khởi tạo — thứ nguy hiểm nhất — lọt qua cả -O0 lẫn -O2, kể cả khi bật thẳng -Wmaybe-uninitialized. Đo thật trong container, và bài học về giới hạn của phân tích tĩnh.