Skip to content

Add a repeatable performance and scale benchmark suite #35

Description

@lan17

Priority

P2 — Medium — measurement infrastructure for performance-sensitive work, not a correctness blocker by itself.

Current state

DialCache now has a checked-in benchmark command:

pnpm benchmark:request-local

#69 expanded the harness from three to five semantic scenarios:

  • sequential request-local hits
  • sequential process-local hits
  • enabled bounded fallbacks
  • request-local coalescing
  • process-scoped coalescing with state assertions

Current evidence:

The existing timings remain informational. Output is only a console table; it captures no environment metadata, latency distribution, Redis/payload matrix, metrics comparison, heap/allocation data, or regression budget. CI does not run even a semantic smoke version.

Phase 1 — comparable harness

  • Emit machine-readable JSON alongside readable output.
  • Record Node, platform, architecture, dependency/Redis versions, iteration counts, and relevant configuration.
  • Cover representative local hit/miss paths with metrics disabled and enabled.
  • Cover tracked and untracked Redis read/write paths across a small payload matrix.
  • Add a small deterministic semantic CI smoke run without noisy timing gates.

Phase 2 — evidence for a selected design

Add focused scenarios only when a concrete issue needs them. Cluster skew, heap profiling, failure injection, compression, and large batch matrices belong here rather than in a universal first harness.

Dependencies

Use this harness before selecting performance-sensitive behavior in #40, #42, #43, or #60. Keep lower-copy Redis protocol research in #37.

Acceptance criteria for Phase 1

  • Reproducible JSON and human-readable output with captured environment/configuration.
  • Local hit/miss and tracked/untracked Redis coverage.
  • Metrics-on/off comparison and representative payload sizes.
  • Deterministic semantic assertions.
  • Lightweight CI smoke without unstable performance thresholds.
  • Baselines recorded before any regression budget is selected.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions