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

SSA trong compiler Go: xem tận mắt 50 pha biến hàm của bạn thành 3 lệnh

SSA là biểu diễn trung gian nơi mọi tối ưu compiler diễn ra. Đo thật với GOSSAFUNC: một hàm 2 phép cộng, 1 phép nhân và nhánh chết đi qua 50 pha (regalloc và lower đắt nhất) rồi co xuống còn 3 lệnh — CSE gộp biểu thức trùng, DCE xoá nhánh chết, strength reduction đổi nhân thành dịch bit. Go 1.23.

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

Compiler directive //go: trong Go: từ embed tiện lợi đến linkname nguy hiểm

Chú thích //go: là công tắc điều khiển compiler và linker. Đo thật: go:embed nhúng file vào binary lúc build, go:linkname gọi được hàm runtime riêng (runtime.nanotime), và một khoảng trắng thừa sau // khiến directive bị bỏ qua âm thầm. Cái nào an toàn, cái nào phá an toàn bộ nhớ. Go 1.23.

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

PGO trong Go: compiler dùng profile production để tối ưu, và vì sao benchmark nhỏ không thấy gì

Profile-guided optimization cho compiler dùng profile CPU chạy thật để devirtualize suy đoán những lời gọi interface mà phân tích tĩnh bó tay. Đo thật: PGO devirtualize được h.Chay khi tĩnh không làm được, nhưng benchmark micro gần như không đổi — lợi ích thật là 2-14% trên app lớn. Go 1.23.

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.