Skip to content

feat(hash): latency + throughput (Short/Web) rendering; 128-bit throughput - #260

Merged
helly25 merged 3 commits into
mainfrom
feat/hash-latency-throughput-render
Jul 15, 2026
Merged

feat(hash): latency + throughput (Short/Web) rendering; 128-bit throughput#260
helly25 merged 3 commits into
mainfrom
feat/hash-latency-throughput-render

Conversation

@helly25

@helly25 helly25 commented Jul 15, 2026

Copy link
Copy Markdown
Owner

Summary

Follow-up to #259: renders the latency vs throughput split from the new benchmark, adds the 128-bit throughput benchmark, and republishes the README from the merged-main (80a4c8a8) measurements.

Report tool

  • Two views per hash width, in layout order per machine: 64-bit latency, 64-bit throughput (Short, Web), 128-bit latency, 128-bit throughput (Short, Web) — each a chart + table, and each dropped when its data is absent (so 128-bit throughput simply doesn't appear until measured).
    • Latency = ns/hash at an exact length (lower is better).
    • Throughput = GiB/s over a realistic length range truncated to each upper bound (higher is better); one chart per distribution.
  • Bundles are re-distilled from their raw on read (_results_from_bundle), so a bundle measured before this split still yields today's schema (e.g. latency tables from old data) and no bundle ever needs re-packing when the tool changes.
  • distill/tables/plot/compare/publish/verify all follow the new schema; charts gained y_label/x_label (GiB/s vs ns/op) and 1-2-5 × 10ⁿ y-axis ticks (readable on the narrow throughput axis).

Benchmark

  • Added BmHash128Throughput (128-bit bounded-range throughput) and guarded the 64-/128-bit paths by HasGetHash64 / HasGetHash128 (handles 64-only / 128-only algorithms).

Data & docs

  • Published the 80a4c8a8 bundles → per machine: 64-bit latency, 64-bit throughput Short/Web, 128-bit latency. 128-bit throughput awaits a re-measure (the data predates BmHash128Throughput).
  • Dropped the superseded 1417af5e bundles + old throughput charts.
  • Rewrote the Performance prose + "Reading the results" for the latency/throughput model and refreshed the SMHasher3 tables.

Follow-up

Re-measure on each machine with this branch to populate the 128-bit throughput sections (they'll appear automatically).

helly25 added 3 commits July 15, 2026 01:01
…8-bit throughput

Report: distill and render the latency (ns, exact length) / throughput (GiB/s,
bounded Short/Web distributions) split - each a chart + table per hash width, in
order 64-latency, 64-throughput Short/Web, 128-latency, 128-throughput Short/Web,
with absent sections dropped. Bundles are re-distilled from their raw on read, so
old bundles still yield latency tables and no bundle needs re-packing when the
tool changes; plot/compare/publish/verify all follow the new schema.

Benchmark: add BmHash128Throughput and guard the 64-/128-bit paths by
HasGetHash64 / HasGetHash128.

Data: publish the merged-main (80a4c8a) bundles (64-bit latency, 64-bit
throughput Short/Web, 128-bit latency per machine; 128-bit throughput awaits a
re-measure) and drop the superseded 1417af5 bundles + old throughput charts.
Refreshed the README perf prose, "Reading the results", and SMHasher3 tables.
The narrow ~1-decade GiB/s throughput axis only labelled decade powers (1, 10);
add 1-2-5 x 10^n gridlines/labels per decade (also denser on the latency axis).
Regenerated the committed charts.
The headline claimed mumbo/jumbo "post the best mixed-length latency"; the new
data does not cleanly support a raw-latency win. Reframe mumbo as the all-round
default - among the fastest on every machine, SMHasher3-clean, notice-free
Apache-2.0, with streaming and a Starlark port - and jumbo as the excellent
native 128-bit choice.
@helly25
helly25 enabled auto-merge (squash) July 15, 2026 06:24
@helly25
helly25 requested a review from Fab-Cat July 15, 2026 06:24
@helly25
helly25 merged commit 29b54cc into main Jul 15, 2026
22 checks passed
@helly25
helly25 deleted the feat/hash-latency-throughput-render branch July 15, 2026 06:52
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.

2 participants