Skip to content

13.4 Performance benchmark suite with regression gating #924

Description

@determined-001

Labels: type:perf area:pulse-core
Milestone: Hardening - cross-cutting
Effort: Medium
Depends on: none

Description

Normalization sits on the hot path of every event, and decodedData adds spec
resolution and Zod validation to that path. No benchmark exists, so a change that
halves throughput ships unnoticed until someone runs it at volume.

Acceptance criteria

  • Benchmarks cover raw event → NormalizedEvent throughput, decode-with-spec throughput, watcher fan-out at 1 / 100 / 1000 watchers, and cursor write cost per adapter
  • Benchmarks run against the recorded CAP-67 fixture corpus for reproducibility
  • Results are stored as JSON and compared against a committed baseline in CI
  • A regression greater than 20% fails the build
  • Updating the baseline requires a justification in the PR body, documented in the process
  • docs/ARCHITECTURE.md records current numbers and the hardware they were measured on

Implementation notes

  1. Fixture-driven, not network-driven - a benchmark that hits testnet measures
    the network.

Affected files

  • packages/pulse-core/bench/ (new)
  • .github/workflows/ci.yml
  • docs/ARCHITECTURE.md

Metadata

Metadata

Assignees

Labels

Stellar WaveDrips Wave Program - opt an issue in by applying this labelarea:pulse-coreEvent engine, normalization, watcher routingcomplexity:medium150 pointstype:perf--force

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions