Beschreibung
Implementiere Benchmarks für kritische Code-Paths (Sync-Engine, Mermaid-Export) mit Regression Detection in CI. Ermöglicht Performance-Tracking über Releases hinweg.
Motivation:
- Go Tool:
go test -bench ist built-in, keine Dependencies
- Verhindert Performance-Degradation
- Baseline für Performance-SLOs
- Data-driven optimization decisions
Implementation Plan
Phase 1: Benchmark-Suite erstellen (2h)
-
internal/sync/benchmark_test.go
- BenchmarkSyncSmallModel (100 elements)
- BenchmarkSyncLargeModel (5000 elements)
- BenchmarkDetectChanges
- BenchmarkApplyForward
- BenchmarkApplyReverse
-
internal/diagram/benchmark_test.go
- BenchmarkExportMermaid (10 views)
- BenchmarkExportMermaid (100 views)
- BenchmarkWrapDiagramsInMarkdown
-
internal/model/benchmark_test.go
- BenchmarkLoad (JSONC parsing)
- BenchmarkFlattenElements
- BenchmarkResolveView
- BenchmarkValidate
Deliverable: benchmarks run locally go test -bench=./internal/sync/
Phase 2: CI Integration & Baselines (1.5h)
-
.github/workflows/benchmark.yml
- Run benchmarks on every PR
- Store results in
benchmarks/ directory
- Generate summary comment on PR
-
Create baseline results
go test -bench=. -benchmem ./internal/sync/ > benchmarks/main.txt
-
Add benchstat tool
- Compare PR results vs main
- Flag >5% regressions
Deliverable: CI workflow, baseline file in repo
Phase 3: Documentation & SLOs (1h)
-
BENCHMARKS.md
- Expected runtimes per benchmark
- Hardware specs (CPU, RAM used for baseline)
- How to run locally
- Regression interpretation
-
Performance SLOs
Sync 1000 elements: <500ms
Sync 10000 elements: <5s
Export 100 views: <2s
Model.Load 50MB: <1s
Deliverable: BENCHMARKS.md, SLO document
Akzeptanzkriterien
- ✅ Mindestens 10 Benchmarks implementiert (sync, diagram, model)
- ✅ Benchmarks laufen in CI auf jedem PR
- ✅ Baseline-Ergebnisse gespeichert (
benchmarks/main.txt)
- ✅ Regression-Detection: >5% Abweichung flagged
- ✅ Dokumentation: How-to-run, SLOs, expected values
- ✅ All benchmarks stable (<5% variance in 3 runs)
Aufwand: 3-4 Stunden
Beschreibung
Implementiere Benchmarks für kritische Code-Paths (Sync-Engine, Mermaid-Export) mit Regression Detection in CI. Ermöglicht Performance-Tracking über Releases hinweg.
Motivation:
go test -benchist built-in, keine DependenciesImplementation Plan
Phase 1: Benchmark-Suite erstellen (2h)
internal/sync/benchmark_test.go
internal/diagram/benchmark_test.go
internal/model/benchmark_test.go
Deliverable: benchmarks run locally
go test -bench=./internal/sync/Phase 2: CI Integration & Baselines (1.5h)
.github/workflows/benchmark.yml
benchmarks/directoryCreate baseline results
Add benchstat tool
Deliverable: CI workflow, baseline file in repo
Phase 3: Documentation & SLOs (1h)
BENCHMARKS.md
Performance SLOs
Deliverable: BENCHMARKS.md, SLO document
Akzeptanzkriterien
benchmarks/main.txt)Aufwand: 3-4 Stunden