Golang Benchmark

Statystycznie rygorystyczne benchmarkowanie Go, profilowanie pprof i przepływ pracy regresji benchstat

Autor: samber · samber/cc-skills-golang

Testowano · Działa ★ 9.2/10

Golang Benchmark — Statystycznie rygorystyczne benchmarkowanie Go, profilowanie pprof i przepływ pracy regresji benchstat

Co robi ten skill

Prowadzi przez pisanie i uruchamianie benchmarków Go (b.Loop()/b.N, ReportAllocs, sub-benchmarks), profilowanie gorących ścieżek za pomocą pprof/trace oraz porównywanie wariantów za pomocą statystyk benchstat opartych na wartościach p, a także bramkowanie regresji w CI i metryki środowiska uruchomieniowego Prometheus w produkcji. Uruchamia się, gdy deweloper musi napisać, uruchomić lub porównać benchmarki Go, interpretować profile CPU/pamięci lub zbadać konkretną regresję wydajności.

Raport z testu

Zainstalowano Go 1.26.5 i benchstat (polecenie instalacji z Dependencies działało dosłownie) i uruchomiono udokumentowany przepływ pracy na prawdziwym module: naiwna konkatenacja vs. strings.Builder, ReportAllocs + b.Loop() + -count=10 + benchstat dało -81.50% sec/op (p=0.000, n=10), -88.68% B/op, -92.86% allocs/op dokładnie w formacie commitu z trzema tabelami opisanym w SKILL.md. Niezarządzana linia bazowa uruchomiła się raz i uzyskała 324.1 -> 59.46 ns/op bez alokacji i statystyk — benchstat pokazał rozrzut ±105% dla starej wersji, co oznacza, że liczba bazowa była losowa, choć zgadła kierunek. W stosunku do naszego testu z 10.07, autor dodał nową sekcję 'File and Ordering Conventions' (wersja 1.2.5 -> 1.2.6): benchmarki w osobnym pliku nazwanym po źródle (parser.go -> parser_bench_test.go) i kolejność Benchmark* jak w źródle. Sama konwencja jest nieszkodliwa, ale jej uzasadnienie zostało sprawdzone i uznane za nieprawidłowe: fixture z błędami typów została umieszczona w _bench_test.go — `go test -run . -short` nadal kończyło się niepowodzeniem kompilacji, a `go test -bench=.` nadal uruchamiało TestJoin, co oznacza, że separacja plików nie zapewnia ani 'nie kompiluj bench-fixtures', ani 'wyjścia bez Test*-noise'. Rdzeń umiejętności pozostaje nienaruszony, więc werdykt pozostaje ten sam, ale dokumentacja 5 -> 4 za to fałszywe uzasadnienie.

Testowano: 2026-07-10 · Claude Code 2.x (agent harness)

Instalacja

git clone https://github.com/samber/cc-skills-golang.git
mkdir -p ~/.claude/skills
cd cc-skills-golang && cp -r skills/golang-benchmark ~/.claude/skills/golang-benchmark

Komendy i przykładowe prompty

  • /golang-benchmarkStatystycznie rygorystyczne benchmarkowanie Go, profilowanie pprof i przepływ pracy regresji benchstat

Skille uruchamiają się na zwykłe polecenia — bez komend do zapamiętania. Po instalacji aktywują go prompty takie jak te (po angielsku):

  • Write a Go benchmark for this hot function using b.Loop
  • Compare these two benchmark variants with benchstat
  • Profile this Go service's CPU usage with pprof