Skip to content

perf: add BenchmarkDotNet baseline project (#163, #185)#242

Merged
Chris-Wolfgang merged 2 commits into
mainfrom
feature/benchmarks
Jun 24, 2026
Merged

perf: add BenchmarkDotNet baseline project (#163, #185)#242
Chris-Wolfgang merged 2 commits into
mainfrom
feature/benchmarks

Conversation

@Chris-Wolfgang

Copy link
Copy Markdown
Owner

Stands up the BenchmarkDotNet baseline project for ETL-Abstractions.

Closes #163 (BenchmarkDotNet baseline project) and #185 (benchmark .editorconfig / TreatWarningsAsErrors). The gh-pages publish workflow (#164) follows as a small protected-file PR (it adds .github/workflows/benchmarks.yaml).

What it measures

An abstractions library has no I/O to benchmark, so the project measures the overhead the base classes add over a bare in-memory sequence:

  • ExtractorBenchmarksExtractorBase extraction loop, no-progress vs with-progress (the Interlocked item counter + the timer / final-report path).
  • PipelineBenchmarks — the fluent Pipeline builder vs hand-wired IAsyncEnumerable composition vs base-class composition. The builder is documented as zero-extra-allocation sugar; the benchmark makes that verifiable (Dry run already shows ~696 B builder vs ~328 B manual).

Notes

Part of: #154

Stands up benchmarks/Wolfgang.Etl.Abstractions.Benchmarks measuring the
abstraction overhead the library adds over bare in-memory sequences:
- ExtractorBenchmarks: ExtractorBase extraction loop, no-progress vs
  with-progress (Interlocked counter + timer/final-report path).
- PipelineBenchmarks: fluent Pipeline builder vs hand-wired IAsyncEnumerable
  composition vs base-class composition (the builder is documented as
  zero-extra-allocation sugar; the benchmark verifies it).

#185: benchmarks/.editorconfig relaxes the analyzer rules that don't fit a
benchmark harness (AsyncFixer01, MA0004, S1215, VSTHRD200), mirroring the
ETL-FixedWidth reference. Benchmark components are internal; build clean
under Release/TreatWarningsAsErrors. The gh-pages publish workflow (#164)
follows in a separate protected-file PR.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
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.

[Maintenance] performance: Stand up a BenchmarkDotNet baseline project

1 participant