Golang Benchmark

Statistisch rigoroses Go-Benchmarking, pprof-Profiling und benchstat-Regressions-Workflow

von samber · samber/cc-skills-golang

Getestet · Funktioniert ★ 9.2/10

Golang Benchmark — Statistisch rigoroses Go-Benchmarking, pprof-Profiling und benchstat-Regressions-Workflow

Was es kann

Anleitung zum Schreiben und Ausführen von Go-Benchmarks (b.Loop()/b.N, ReportAllocs, Sub-Benchmarks), Profiling von Hot Paths mit pprof/trace und Vergleichen von Varianten mit benchstat's p-Wert-gestützten Statistiken, plus CI-Regressions-Gating und Prometheus-Laufzeitmetriken für die Produktion. Wird ausgelöst, wenn ein Entwickler Go-Benchmarks schreiben, ausführen oder vergleichen, CPU-/Speicherprofile interpretieren oder eine spezifische Performance-Regression untersuchen muss.

Testbericht

Go 1.26.5 und benchstat installiert (Installationsbefehl aus Dependencies funktionierte wortgetreu) und den dokumentierten Workflow an einem realen Modul ausgeführt: naive Verkettung vs. strings.Builder, ReportAllocs + b.Loop() + -count=10 + benchstat ergab -81.50% sec/op (p=0.000, n=10), -88.68% B/op, -92.86% allocs/op genau im Drei-Tabellen-Commit-Format, wie in SKILL.md beschrieben. Die ungesteuerte Baseline lief einmal und erreichte 324.1 -> 59.46 ns/op ohne Allokationen oder Statistiken — benchstat zeigte eine Streuung von ±105% für die alte Version, was bedeutet, dass die Baseline-Zahl zufällig war, obwohl sie die Richtung erraten hat. Bezogen auf unseren 10.07-Test fügte der Autor einen neuen Abschnitt 'File and Ordering Conventions' hinzu (Version 1.2.5 -> 1.2.6): Benchmarks in einer separaten Datei, benannt nach der Quelle (parser.go -> parser_bench_test.go) und Benchmark*-Reihenfolge wie in der Quelle. Die Konvention selbst ist harmlos, aber ihre Begründung wurde überprüft und als falsch befunden: eine Fixture mit Typfehlern wurde in _bench_test.go platziert — `go test -run . -short` schlug immer noch bei der Kompilierung fehl, und `go test -bench=.` führte immer noch TestJoin aus, was bedeutet, dass die Dateitrennung weder 'Bench-Fixtures nicht kompilieren' noch 'Ausgabe ohne Test*-Rauschen' bietet. Der Kern des Skills ist unberührt, daher bleibt das Urteil dasselbe, aber die Dokumentation 5 -> 4 für diese falsche Begründung.

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

Installation

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

Befehle & Beispiel-Prompts

  • /golang-benchmarkStatistisch rigoroses Go-Benchmarking, pprof-Profiling und benchstat-Regressions-Workflow

Skills reagieren auf normale Anfragen — keine Slash-Befehle nötig. Nach der Installation aktivieren Prompts wie diese den Skill (auf Englisch):

  • 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