Skip to content

feat(bench): expose min/max/stddev/P95 in benchmark reports#89

Merged
Oaklight merged 1 commit into
masterfrom
feature/bench-tail-latency
May 18, 2026
Merged

feat(bench): expose min/max/stddev/P95 in benchmark reports#89
Oaklight merged 1 commit into
masterfrom
feature/bench-tail-latency

Conversation

@Oaklight
Copy link
Copy Markdown
Owner

Summary

Closes #81.

The benchmark HTML report previously hid tail-latency stats (min, max, stddev, P95) behind a tooltip on a single "Spread" column. This PR makes them first-class visible columns.

  • Replace the single Spread column with four explicit tail-latency columns: Min, Max, StdDev, P95 — both for zerodep and for the reference implementation
  • Use a two-row <thead> with colspan group headers ("zerodep tail latency" / "Ref tail latency") so the wider table stays readable
  • Wrap all tables in <div class="table-wrap"> (overflow-x: auto) for narrow-viewport usability
  • P95 is computed from stats.data when present; gracefully falls back to when the array is absent (backward compatible with older JSON)
  • Both _generate_html() and _generate_module_page() updated consistently
  • Rename internal helper _spread_cell()_tail_cells() to reflect its new semantics

Test plan

  • Ran script against a synthetic fixture with stats.data present — all four tail-latency columns rendered correctly
  • Ran script against a fixture without stats.data — P95 shows , no crash (backward compat verified)
  • Pre-commit hooks pass (ruff, ty, complexipy)

Replace the single "Spread" tooltip column with four explicit tail-latency
columns (Min, Max, StdDev, P95) in all HTML benchmark tables — both the
zerodep vs. reference comparison tables and the standalone tables.

Key changes:
- Rename _spread_cell() → _tail_cells() which now renders four <td> elements
  instead of one, so min/max/stddev/P95 are always visible without hovering
- Use a two-row <thead> with colspan grouping headers ("zerodep tail latency"
  / "Ref tail latency") to keep the wider table readable
- Wrap all tables in <div class="table-wrap"> (overflow-x: auto) so the page
  stays usable on narrow viewports
- P95 is computed from stats.data when present; falls back to "—" when absent
  (backward compatible with older JSON that omits the data array)
- Both _generate_html() and _generate_module_page() updated consistently
@Oaklight Oaklight merged commit 7bb2ec3 into master May 18, 2026
6 checks passed
@Oaklight Oaklight deleted the feature/bench-tail-latency branch May 18, 2026 12:16
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.

Benchmark: expose tail latency (min/max/stddev/P95) in reports

1 participant