Lập trình Go 22/09/2026 10 phút

Benchmark chính xác với benchstat trong Go: một con số đơn lẻ dễ lừa

Chạy go test -bench một lần cho một con số, nhưng máy đầy nhiễu nên nó dao động mỗi lần. So hai phiên bản bằng một con số mỗi bên có thể kết luận sai. benchstat chạy nhiều lần, tính trung bình ± độ lệch, và so hai bản bằng p-value. Đo thật: cải tiến -94.84% (p=0.000) là thật, hàm không đổi báo p=1.000.

Lập trình Go 22/09/2026 10 phút

Finalizer trong Go: vì sao runtime.SetFinalizer là công cụ nguy hiểm, đo thật cạm bẫy

SetFinalizer đăng ký hàm chạy khi object thành rác, nghe tiện để dọn tài nguyên nhưng đầy cạm bẫy. Đo thật: finalizer chỉ chạy sau GC (0 trước), bất đồng bộ (9998/10000), giữ object sống thêm một chu kỳ GC (19MB vs 0MB), và KHÔNG chạy nếu chương trình thoát trước GC. Go 1.23.

Lập trình Go 22/09/2026 11 phút

Encoding nhị phân tùy biến trong Go: nhỏ hơn và nhanh hơn JSON

JSON là văn bản tự mô tả — lặp tên field, số là chuỗi ASCII, phải phân tích cú pháp khi đọc. Với dữ liệu nội bộ nóng, một định dạng nhị phân tùy biến gọn và nhanh hơn nhiều. Đo thật trong Go: 100k bản ghi, binary nhỏ hơn 2.3 lần, mã hóa nhanh 4 lần, giải mã nhanh 9 lần — cùng đánh đổi và rủi ro.