Goal: show when indexed replay starts to beat a naive full replay on larger histories. We generate a long demo‑style narrative, then compare VSABrains against a naive baseline that always replays from step 0 and scans the full list for localization.
Default run size is 10,000 facts for fast local testing. The example numbers below come from a 100,000‑fact run (see the date at the bottom). The script supports up to 1,000,000 facts.
| Area | Result | Interpretation | Status |
|---|---|---|---|
| Ingestion | 14.34 s for 100,000 facts (~6,971 facts/s) | Feasible CPU‑first ingestion at this scale | Good |
| Replay Queries | VSABrains 0.024 s vs naive 0.050 s (24 queries) | ~2.07× faster with checkpoints | Win |
| Localization | VSABrains 0.0011 s vs naive 0.020 s (24 runs) | ~18× faster indexed localization | Big Win |
| Correctness | 0 mismatches on the replay-based queries | Speedup without drift on these tests | Pass |
Ingest cost grows roughly linearly with facts and also scales with the number of columns (more writes per step).
The naive baseline does a full replay from step 0 for every query. VSABrains replays only from the nearest checkpoint, which reduces the effective replay distance.
Localization is where indexing matters most. The naive list must compare the query window against almost the entire history, while VSABrains narrows the search to candidate locations.
Apples-to-apples update: localization timing now uses the same run count as the replay section (24).
| Parameter | Value |
|---|---|
| Facts | 100,000 (example run) |
| Queries | 24 |
| Localization Runs | 24 |
| Columns | 1 |
| Checkpoint Interval | 5,000 |
| Map | 96 × 96, k=4 |
| Displacement | contextLength=2, maxStep=3 |
Run command:
node eval/exp5-performance/run.mjs --facts 100000 --queries 24 --localizationRuns 24 --columns 1 --checkpointInterval 5000 --progressEvery 20000
Default (fast) run:
node eval/exp5-performance/run.mjs
Example run recorded: 2026-01-27. Source: eval/exp5-performance/run.mjs.