Benchmark & Đo hiệu năng Go
Kỹ năng hướng dẫn viết benchmark Go, profiling bằng pprof, so sánh thống kê với benchstat và chặn hồi quy hiệu năng trong CI.
Lập trìnhTrung cấp★ 428⑂ 45Điểm AI 9/10Cập nhật lần cuối: 23 thg 9, 2026
Làm được gì
- Đặt quy ước viết benchmark: file
_bench_test.gotheo từng file nguồn, thứ tự hàm khớp với mã gốc. - Ví dụ mẫu cho
b.Loop()(Go 1.24+),b.ReportAllocs(),b.ReportMetric()và sub-benchmark dạng bảng. - Bảng cờ chạy
go test -bench -benchmem -count=10 -cpuprofile ...kèm cách đọcns/op,B/op,allocs/op. - Dùng
benchstatđể so sánh có p-value; cấm tuyên bố cải thiện khi kết quả là~(không có ý nghĩa thống kê). - Tài liệu tham chiếu cho pprof, execution trace, phân tích compiler (escape/inlining), CI regression (benchdiff, cob, gobenchdata) và metric runtime Prometheus.
Phù hợp với ai
- Lập trình viên Go cần chứng minh cải thiện hiệu năng bằng số liệu trong PR.
- Đội ngũ muốn kết luận dựa trên thống kê thay vì một lần chạy may mắn.
- Kỹ sư nền tảng muốn tự động phát hiện hồi quy hiệu năng trên CI.
Ví dụ sử dụng
- Đo trước/sau khi thay allocation bằng
sync.Poolvới-count=10, rồi dán output benchstat vào commitperf(parser): .... - Thử nhiều phương án tối ưu trong các git worktree riêng, nhưng chạy benchmark tuần tự để tránh nhiễu CPU, rồi chọn phương án thắng.
- Khi benchmark báo allocation bất ngờ, dùng memprofile và tài liệu escape analysis để tìm giá trị bị đẩy lên heap.
· · · Hướng dẫn cài đặt · · ·
Dùng thử ngay, không cần cài
Dán đoạn dưới vào Claude là dùng được skill này mà không cần cài đặt.
Hãy đọc hướng dẫn trong tệp này và làm theo để giúp mình: https://raw.githubusercontent.com/aiskillstore/marketplace/HEAD/pending/samber/golang-benchmark/SKILL.md Mình muốn: (viết việc bạn cần ở đây)
Nếu Claude không mở được liên kết, hãy mở liên kết và copy nội dung vào rồi dán.
↓ Thấy hữu ích thì tải ZIP bên dưới và cài. Sau đó skill tự chạy, không phải dán lại mỗi lần.
Cài vào ứng dụng Claude (không cần terminal)
- Tải tệp ZIP bằng nút bên dưới.
- Trong Claude, mở Settings → Capabilities và bật 'Code execution and file creation'. (chỉ một lần)
- Vào Customize → Skills → + → 'Upload a skill' rồi tải tệp ZIP lên.
Cài vào Claude Code
Để Claude làm — dán câu dưới đây vào Claude Code
Hãy cài skill mình tìm thấy trên Claude Skill Mart. Copy thư mục pending/samber/golang-benchmark từ repo GitHub aiskillstore/marketplace vào ~/.claude/skills/golang-benchmark/ của mình. Sau khi cài xong, cho mình biết skill này làm được gì trong một câu.
Cài bằng lệnh thủ công
git clone https://github.com/samber/cc-skills-golang.git /tmp/cc-skills-golang && mkdir -p ~/.claude/skills && cp -r /tmp/cc-skills-golang/golang-benchmark ~/.claude/skills/⚠ Đây là skill do người khác tạo. Hãy kiểm tra repo gốc trước khi cài.
- Kiểm tra Go đã cài:
go version(khuyến nghị 1.24 trở lên). - Cài công cụ so sánh thống kê:
go install golang.org/x/perf/cmd/benchstat@latest - Đảm bảo
$(go env GOPATH)/binnằm trong biến PATH để gọi đượcbenchstat. - Tải kho kỹ năng:
git clone https://github.com/samber/cc-skills-golang.git - Chép thư mục kỹ năng:
mkdir -p ~/.claude/skills && cp -r cc-skills-golang/golang-benchmark ~/.claude/skills/ - Kiểm tra thư mục
references/đã được chép đầy đủ. - Khởi động lại Claude Code và thử yêu cầu: "viết benchmark cho hàm này và so sánh trước/sau bằng benchstat".