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

Giảm áp lực GC thực chiến: gộp mọi kỹ thuật, cắt GC 4 lần

Giảm áp lực GC không phải một mẹo mà là gộp nhiều kỹ thuật. Đo thật cùng tác vụ: tái dùng strings.Builder + Grow prealloc + tránh fmt.Sprintf boxing cắt cấp phát từ 2756 xuống 901 alloc mỗi lần, làm GC chạy 511 thay vì 2068 lần và nhanh 4.2 lần. Quy trình thực chiến đo-tìm-sửa-đo lại. Go 1.23.

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

Cạm bẫy microbenchmark trong Go: trình biên dịch có thể xóa code bạn đo

Trình biên dịch Go tối ưu mạnh: kết quả không dùng bị loại, input hằng số bị tính sẵn — benchmark đo cái không còn chạy, cho số nhỏ hơn thực tế. Đo thật: cùng một hàm, benchmark sai báo 5.5 ns còn benchmark đúng (sink + input biến thiên) báo 9.35 ns — thiếu 41%. Và dấu hiệu nhận biết code bị xóa.