Skip to content

feat: benchmark infrastructure — per-structure tasks, fast mode, JSON persistence, regression compare#14

Merged
bluuewhale merged 9 commits intomainfrom
feat/faster-benchmark-test
Mar 21, 2026
Merged

feat: benchmark infrastructure — per-structure tasks, fast mode, JSON persistence, regression compare#14
bluuewhale merged 9 commits intomainfrom
feat/faster-benchmark-test

Conversation

@bluuewhale
Copy link
Copy Markdown
Owner

Summary

  • Remove 4 dead *GetHitTest benchmark classes; retain MapBenchmark, SetBenchmark, ConcurrentSwissMapGetTest, SimdEqBenchmark
  • Unify class-level @Fork/@Warmup/@Measurement annotations to canonical precise-mode values (@Fork(2), @Warmup(5×1s), @Measurement(5×2s)); fast-mode tasks override via CLI flags
  • Add jmhFast, jmhSwissMap, jmhConcurrent, jmhSimd JavaExec tasks (fast mode: fork=1, warmup=2, iter=3) that auto-write timestamped JSON to benchmark-results/
  • Add jmhCompare task invoking scripts/jmh_compare.py to detect regressions between two JSON result files (configurable threshold, exit 1 on regression)
  • Track benchmark-results/ directory via .gitkeep; gitignore *.json result files

Test Plan

  • ./gradlew test apacheTest googleTest — all green
  • ./gradlew jmhSwissMap runs twice and writes timestamped JSON files
  • ./gradlew jmhCompare produces tabular output and exits non-zero on regression
  • -Pjmh.include=MapBenchmark override narrows benchmark scope correctly
  • ./gradlew tasks --group verification lists all new tasks

@bluuewhale bluuewhale force-pushed the feat/faster-benchmark-test branch from d3a0328 to af9f08c Compare March 21, 2026 06:00
Add design spec for benchmark improvements: independent per-structure
Gradle tasks via JavaExec, fast/precise mode split, JSON result storage,
and regression comparison script.

Update CLAUDE.md to require before/after benchmark comparison after
every optimization change.
- Combine duplicate -jvmArgs into single string to prevent flag overwrite
- Remove SimdEq from jmhSwissMap regex to eliminate overlap with jmhSimd
- Unify SimdEqBenchmark to canonical @fork(2)/@Warmup/@measurement values
- Set warmup time (-w 3s) and measurement time (-r 5s) in fast-mode tasks
- Ignore docs/superpowers/ in .gitignore
@bluuewhale bluuewhale force-pushed the feat/faster-benchmark-test branch from af9f08c to 7d0eea6 Compare March 21, 2026 06:04
@bluuewhale bluuewhale merged commit 640a107 into main Mar 21, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant