Back to the article Jump to the code
Speed Scenario
0.0 ev/s 14:00:00

91 slots, allocated once

COMPLETED volume (outward, √ scale) FAILED count (inward) oldest slot, read whole expired slot, not read slots read by get_*

Solid hand: high-water mark (HWM). Dashed hand: wall clock. During a lull the clock moves on while the HWM stays put. Slots fade with age going clockwise from the hand; 91 = 900 s / 10 s + 1.

Last event

Waiting for the first event
Idle

Latest read

waiting
get_completed_volume()
—MGA
No read yet
Exact sum, last 900 s
—
Difference
—

Reads land at random moments. On each read, the blue sweep walks over the slots that get summed.

get_top_failed_accounts()
  • —

The same state, on a time axis

Late events land left of the HWM. Events older than 900 s never touch a slot.
COMPLETED FAILED PENDING (moves the HWM, not summed) ✕ expired, dropped oldest bucket
—No notable event yet (a long delay or an expired event will show up here).

Throughput and reads across the whole run

Click or drag to move through time

Counters

since the start of the scenario
Events received
0
Accepted late
0
Expired, dropped
0
PENDING
0
Lazy resets
0
KPI reads
0
Exact reads
0
Edge overshoot
0
Mismatch
0

Read log

latest first
TimeReturned (MGA)Exact (MGA)DifferenceTop 3 returnedVerdict

The engine

Contiguous, allocated onceAll 91 buckets exist before the first event arrives.
O(1) ingestion, O(B) readsAn event touches one slot. A read walks B = 91 slots, whatever the throughput.
Fixed spatial boundsMemory stays constant for 10 or 10,000,000 events.

What the runs show

measured on the scenarios above