Skip to content

Latest commit

 

History

History
93 lines (74 loc) · 3.47 KB

File metadata and controls

93 lines (74 loc) · 3.47 KB

Day 3 real-file MapBook replay

Diagnostic MapBook replay on the macOS development machine. Not a Day 5 benchmark and not the final Linux performance result.

Dataset

  • Trading day: July 30, 2019 (the project's fixed sample day, decisions D-008)
  • Basename: 07302019.NASDAQ_ITCH50
  • Decompressed size: 8,661,679,413 bytes (re-verified before the run)
  • Decompressed SHA-256 (re-verified before the run): 9f8634a048b8195ccdcbe618e5833a759e35e04486d74e36b79176d35172654a
  • Replay limit: the first 50,000,000 complete framed messages (product_spec.md section 10, Day 3)

What was verified

Every supported message in the first 50 million frames was decoded and applied to the per-locate MapBook engine in strict mode, which stops at the first semantic feed error. Progressive 1M and 10M runs preceded the 50M run to bound memory growth safely on the 8 GB development machine. Top-of-book output stayed disabled throughout, so no real feed values were written anywhere.

Environment

  • Machine: Apple M2 (arm64), 8 cores, 8 GB RAM, Apple SSD, macOS 26.5.2
  • Compiler: Apple clang 16.0.0 (clang-1600.0.26.6)
  • Configuration: release preset (-O3 -DNDEBUG -march=native, thin LTO)
  • All 158 tests pass in this configuration before the run

Command

cmake --preset release
cmake --build --preset release
ctest --preset release --output-on-failure
/usr/bin/time -l ./build/release/nanobook book /path/to/07302019.NASDAQ_ITCH50 \
  --engine=map --messages=50000000

Result (aggregate, 50M run)

  • Frames visited: 50,000,000 (exactly; replay ended at the frame limit)
  • Supported decoded: 48,461,224; known unsupported skipped: 1,538,776; unknown: 0 (sums to the frame count exactly)
  • Successful book mutations: 48,452,372 (equals supported minus the 3 S and 8,849 R messages exactly; every order operation applied)
  • Semantic errors: 0 across all categories
  • Books created: 8,840; directory entries: 8,849
  • Final active orders: 1,768,131
  • Final bid levels: 353,778; final ask levels: 402,028
  • Final invariant check: ok across every created book
  • Diagnostic elapsed: 19.706 seconds; about 2.54 million messages per second
  • Peak resident set size: 1,147,387,904 bytes (about 1.07 GiB); 0 swaps

Supported counts by type:

Type Count
A 21,339,646
D 19,763,344
U 4,492,847
X 1,001,954
E 943,157
F 890,883
C 20,541
R 8,849
S 3

Progressive safety runs (same command with smaller limits):

Limit Semantic errors Invariants Active orders Peak RSS Rate
1M 0 ok 11,134 33 MB ~5.8M msgs/s
10M 0 ok 457,230 387 MB ~4.9M msgs/s
50M 0 ok 1,768,131 1.07 GiB ~2.54M msgs/s

No semantic anomaly of any kind occurred, so there is no divergence or debugging event to document for this run. FastBook does not exist yet, so no engine comparison is made or implied.

Synthetic fixtures used by Day 3 tests

  • tests/fixtures/day3_book_basic.itch (18 frames, 592 bytes), SHA-256 1f04f59026de87e1610a7f72f8110976765d24ece6dea00a197f5a1a5ba05183
  • tests/fixtures/day3_book_edge.itch (10 frames, 327 bytes), SHA-256 be9c4365be297f93bdee4ff119480a66f42d311855d19d052582c3a8b30c7a9a

Both are generated by tools/itch_synth (book_basic, book_edge) from purely synthetic values and contain no real Nasdaq bytes. This report contains aggregates only; no raw message bytes, tickers, order references, prices, quantities, or top-of-book values from the real feed appear here.