JAVA 21 / REPRODUCIBLE SYSTEMS EXPERIMENT

Event Ledger

Public source on GitHub · Engineering case study

Correct events. Explicit timing boundaries. Measured tradeoffs.

A single-instrument order-book prototype comparing a boxed map baseline with bounded arrays. This report contains measured synthetic workloads on one Windows machine. It is not exchange, network, or live-trading performance.

3 JVM forksFour rounds per implementation per fork
4.38×Reference / array median round P99, service only; descriptive ratio, not a confidence estimate
0.40 µsArray median round P99; apply + best prices + sink

Read the evidence

  1. Correctness first. Every measured replay checks its final order-state digest against the reference. JUnit separately checks semantics, state invariants, random streams and concurrent delivery.
  2. Service is not end-to-end latency. Scheduled-to-done includes producer scheduling lag, backpressure, queue wait and processing. Arrival deadlines never reset to hide backlog.
  3. All rounds remain visible. Tables show medians of per-round percentiles, their observed ranges and the worst individual sample. They are not pooled percentiles.
  4. Allocation boundaries matter. Consumer bytes exclude event generation, book initialization, producer envelopes and retained memory. A zero does not mean the whole application allocates nothing.

offered 100000 enqueue to start

ImplementationP50 µsP95 µsP99 µsP99 range µsWorst sample µsEvents/secConsumer bytes/event
array13.2048.65116.2543.70–315.202,201.2099,946Not sampled
reference12.8545.10112.0555.30–7,348.4011,111.3099,951Not sampled

offered 100000 producer lag

ImplementationP50 µsP95 µsP99 µsP99 range µsWorst sample µsEvents/secConsumer bytes/event
array0.1025.15218.25137.90–866.102,712.4099,946Not sampled
reference0.1023.10211.6057.40–4,907.806,470.0099,951Not sampled

offered 100000 scheduled to done

ImplementationP50 µsP95 µsP99 µsP99 range µsWorst sample µsEvents/secConsumer bytes/event
array14.3581.30335.65175.60–1,113.602,773.6099,946Not sampled
reference14.7571.65353.35114.70–9,209.6011,118.8099,951Not sampled

offered 100000 service

ImplementationP50 µsP95 µsP99 µsP99 range µsWorst sample µsEvents/secConsumer bytes/event
array0.401.001.501.30–1.80595.3099,94612.796
reference1.453.104.853.20–5.903,840.5099,951104.809

offered 500000 enqueue to start

ImplementationP50 µsP95 µsP99 µsP99 range µsWorst sample µsEvents/secConsumer bytes/event
array10.3554.35165.3095.70–4,344.505,075.70498,767Not sampled
reference13.6098.40276.9089.10–5,781.809,537.50498,651Not sampled

offered 500000 producer lag

ImplementationP50 µsP95 µsP99 µsP99 range µsWorst sample µsEvents/secConsumer bytes/event
array0.1023.45237.6039.80–21,780.5022,488.50498,767Not sampled
reference0.1027.55274.8537.50–35,245.5035,762.50498,651Not sampled

offered 500000 scheduled to done

ImplementationP50 µsP95 µsP99 µsP99 range µsWorst sample µsEvents/secConsumer bytes/event
array11.1578.10467.90106.20–22,446.8022,845.50498,767Not sampled
reference15.40147.40487.7598.20–37,078.5037,308.80498,651Not sampled

offered 500000 service

ImplementationP50 µsP95 µsP99 µsP99 range µsWorst sample µsEvents/secConsumer bytes/event
array0.200.500.800.70–1.101,153.30498,7674.674
reference0.801.652.901.90–3.704,709.10498,65196.133

service

ImplementationP50 µsP95 µsP99 µsP99 range µsWorst sample µsEvents/secConsumer bytes/event
array0.200.250.400.30–0.405,174.604,184,5860.003
reference0.551.051.751.10–2.403,305.001,279,67889.506

Tradeoffs and limits

The array book requires dense IDs and a bounded tick range, trading fixed memory for lower per-event allocation. The reference implementation accepts the same bounds for a comparable experiment. Neither is a matching engine. The queue is a standard bounded ArrayBlockingQueue, not a custom lock-free structure.

Desktop scheduling, clock instrumentation and a volatile result sink affect the results. No pinned cores, Linux hardware counters, exchange feed, kernel bypass or wire-to-wire timestamps are included. Repeat on controlled hardware; do not put these figures on a resume without the workload and measurement boundary.

Environment and source provenance

{
  "workload": "synthetic seed=42; 4096 dense IDs; 8192 ticks; 300000 service / 60000 queued events",
  "flags": "-Xms512m -Xmx512m -XX:+UseG1GC",
  "os": "Microsoft Windows NT 10.0.26200.0",
  "cpu": {
    "Name": "13th Gen Intel(R) Core(TM) i9-13900HK",
    "NumberOfCores": 14,
    "NumberOfLogicalProcessors": 20
  },
  "recordedAt": "2026-10-04T22:05:32.1140206Z",
  "source": [
    {
      "path": "src\\main\\java\\io\\github\\bigfiiish\\eventledger\\ArrayBook.java",
      "sha256": "03C0EA027C8EA8277E330F7AC3EBD6B7F4D6E764075FB76C7FCE7E1B22FB8ADF"
    },
    {
      "path": "src\\main\\java\\io\\github\\bigfiiish\\eventledger\\Benchmark.java",
      "sha256": "36ECAC36D95FD2F2E79AAA23ABDD8E683ED25E3B70CFC6F836255889127DB3C6"
    },
    {
      "path": "src\\main\\java\\io\\github\\bigfiiish\\eventledger\\Book.java",
      "sha256": "DB3A490EABD13869DA8C1222129387B7D219C8AAF9ED01D0525186F2C355C5E9"
    },
    {
      "path": "src\\main\\java\\io\\github\\bigfiiish\\eventledger\\Event.java",
      "sha256": "B012209E72DB8B8C374E4F9244D25AEE1BAE81A29A9BC872718BDBCF7819D890"
    },
    {
      "path": "src\\main\\java\\io\\github\\bigfiiish\\eventledger\\Journal.java",
      "sha256": "6759984696F1F772D8D6699EF73D189F6C2151412CAF35D1CEF3349C83D46D8C"
    },
    {
      "path": "src\\main\\java\\io\\github\\bigfiiish\\eventledger\\ReferenceBook.java",
      "sha256": "A22D92B1CB6597F005F3DF836241806A07012E666FCD477A6A8547506C42FD67"
    },
    {
      "path": "src\\main\\java\\io\\github\\bigfiiish\\eventledger\\Replay.java",
      "sha256": "229808C963D2BC0B7080F09D15F75F4D4ED471A31043C76D480458114E6B7904"
    },
    {
      "path": "src\\main\\java\\io\\github\\bigfiiish\\eventledger\\Workload.java",
      "sha256": "D297D55BBF0966D5F3464009DA227487CBAB3746EE89277B259EA2815A133F70"
    },
    {
      "path": "src\\test\\java\\io\\github\\bigfiiish\\eventledger\\BookTest.java",
      "sha256": "EB765D60B9145C1723EDEB50E4B9F7EFAC1B91166C5AAA48E06FFDAC16D2FFDA"
    }
  ],
  "java": "openjdk version \"21.0.12\" 2026-07-21 LTS\r\nOpenJDK Runtime Environment Microsoft-14653896 (build 21.0.12+8-LTS)\r\nOpenJDK 64-Bit Server VM Microsoft-14653896 (build 21.0.12+8-LTS, mixed mode, sharing)\r\n"
}

Download all measurements and provenance JSON

Inspect every measured round
ForkModeImplementationRoundP99 nsMax nsBackpressure events
fork-1servicereference011001274000
fork-1servicearray03001669000
fork-1offered_100000_servicereference045001604000
fork-1offered_100000_scheduled_to_donereference01673007541000
fork-1offered_100000_enqueue_to_startreference0640005077000
fork-1offered_100000_producer_lagreference01180006782000
fork-1offered_100000_servicearray013002561000
fork-1offered_100000_scheduled_to_donearray025100010814000
fork-1offered_100000_enqueue_to_startarray0587005087000
fork-1offered_100000_producer_lagarray020560010143000
fork-1offered_500000_servicereference031004600000
fork-1offered_500000_scheduled_to_donereference05345007613000
fork-1offered_500000_enqueue_to_startreference04781007596000
fork-1offered_500000_producer_lagreference02652005468000
fork-1offered_500000_servicearray09001913000
fork-1offered_500000_scheduled_to_donearray01977004549000
fork-1offered_500000_enqueue_to_startarray01391004533000
fork-1offered_500000_producer_lagarray0622004243000
fork-1servicearray14002171000
fork-1servicereference118004621000
fork-1offered_100000_servicearray11800975000
fork-1offered_100000_scheduled_to_donearray132350011016000
fork-1offered_100000_enqueue_to_startarray11093007513000
fork-1offered_100000_producer_lagarray122010010717000
fork-1offered_100000_servicereference147001686000
fork-1offered_100000_scheduled_to_donereference137650012847000
fork-1offered_100000_enqueue_to_startreference111810011752000
fork-1offered_100000_producer_lagreference127090012459000
fork-1offered_500000_servicearray18001316000
fork-1offered_500000_scheduled_to_donearray188830017899000
fork-1offered_500000_enqueue_to_startarray172000017768000
fork-1offered_500000_producer_lagarray12222006956000
fork-1offered_500000_servicereference130002542000
fork-1offered_500000_scheduled_to_donereference12508006906000
fork-1offered_500000_enqueue_to_startreference11973004265000
fork-1offered_500000_producer_lagreference1734006424000
fork-1servicereference2200028025000
fork-1servicearray23004235000
fork-1offered_100000_servicereference2380032392000
fork-1offered_100000_scheduled_to_donereference221180032550000
fork-1offered_100000_enqueue_to_startreference210590032502000
fork-1offered_100000_producer_lagreference213520031541000
fork-1offered_100000_servicearray216005953000
fork-1offered_100000_scheduled_to_donearray2111360022957000
fork-1offered_100000_enqueue_to_startarray216280020692000
fork-1offered_100000_producer_lagarray286610022792000
fork-1offered_500000_servicereference2300047091004137
fork-1offered_500000_scheduled_to_donereference210327700104353004137
fork-1offered_500000_enqueue_to_startreference2526340071010004137
fork-1offered_500000_producer_lagreference2829140084292004137
fork-1offered_500000_servicearray21100560000
fork-1offered_500000_scheduled_to_donearray260520012507000
fork-1offered_500000_enqueue_to_startarray23365007720000
fork-1offered_500000_producer_lagarray225300012153000
fork-1servicearray34002220000
fork-1servicereference316007103000
fork-1offered_100000_servicearray313001619000
fork-1offered_100000_scheduled_to_donearray337750017554000
fork-1offered_100000_enqueue_to_startarray315400014869000
fork-1offered_100000_producer_lagarray322350017279000
fork-1offered_100000_servicereference348001937000
fork-1offered_100000_scheduled_to_donereference338610013011000
fork-1offered_100000_enqueue_to_startreference32110007563000
fork-1offered_100000_producer_lagreference322910012453000
fork-1offered_500000_servicearray3700559000
fork-1offered_500000_scheduled_to_donearray352920013916000
fork-1offered_500000_enqueue_to_startarray31455002186000
fork-1offered_500000_producer_lagarray336400013643000
fork-1offered_500000_servicereference325001990000
fork-1offered_500000_scheduled_to_donereference353880011757000
fork-1offered_500000_enqueue_to_startreference32930006116000
fork-1offered_500000_producer_lagreference329740011458000
fork-2servicereference014001098000
fork-2servicearray04005005000
fork-2offered_100000_servicereference059003124000
fork-2offered_100000_scheduled_to_donereference034400013293000
fork-2offered_100000_enqueue_to_startreference01881008666000
fork-2offered_100000_producer_lagreference019280012698000
fork-2offered_100000_servicearray01600666000
fork-2offered_100000_scheduled_to_donearray034780013924000
fork-2offered_100000_enqueue_to_startarray08250013896000
fork-2offered_100000_producer_lagarray02164009649000
fork-2offered_500000_servicereference0310033808003072
fork-2offered_500000_scheduled_to_donereference037078500373088003072
fork-2offered_500000_enqueue_to_startreference0578180095375003072
fork-2offered_500000_producer_lagreference035245500357625003072
fork-2offered_500000_servicearray0800429000
fork-2offered_500000_scheduled_to_donearray042200012118000
fork-2offered_500000_enqueue_to_startarray01823003413000
fork-2offered_500000_producer_lagarray016430011786000
fork-2servicearray1400829000
fork-2servicereference123004904000
fork-2offered_100000_servicearray11300815000
fork-2offered_100000_scheduled_to_donearray11756009050000
fork-2offered_100000_enqueue_to_startarray1437001892000
fork-2offered_100000_producer_lagarray11523008735000
fork-2offered_100000_servicereference1520024667000
fork-2offered_100000_scheduled_to_donereference1196780036716000
fork-2offered_100000_enqueue_to_startreference199870034513000
fork-2offered_100000_producer_lagreference1113190029274000
fork-2offered_500000_servicearray110001205000
fork-2offered_500000_scheduled_to_donearray15138008295000
fork-2offered_500000_enqueue_to_startarray11937004073000
fork-2offered_500000_producer_lagarray13789007859000
fork-2offered_500000_servicereference128001322000
fork-2offered_500000_scheduled_to_donereference14410009993000
fork-2offered_500000_enqueue_to_startreference12608004024000
fork-2offered_500000_producer_lagreference12845009388000
fork-2servicereference221004960000
fork-2servicearray240051746000
fork-2offered_100000_servicereference250002198000
fork-2offered_100000_scheduled_to_donereference236270017831000
fork-2offered_100000_enqueue_to_startreference2951009222000
fork-2offered_100000_producer_lagreference227650017153000
fork-2offered_100000_servicearray216001416000
fork-2offered_100000_scheduled_to_donearray22564009325000
fork-2offered_100000_enqueue_to_startarray21478006978000
fork-2offered_100000_producer_lagarray21379009045000
fork-2offered_500000_servicereference228001814000
fork-2offered_500000_scheduled_to_donereference21585002628000
fork-2offered_500000_enqueue_to_startreference21413002533000
fork-2offered_500000_producer_lagreference2505001660000
fork-2offered_500000_servicearray28001051000
fork-2offered_500000_scheduled_to_donearray22416008571000
fork-2offered_500000_enqueue_to_startarray21483005031000
fork-2offered_500000_producer_lagarray2949007831000
fork-2servicearray33002358000
fork-2servicereference3170033050000
fork-2offered_100000_servicearray31500598000
fork-2offered_100000_scheduled_to_donearray348050016931000
fork-2offered_100000_enqueue_to_startarray312320012402000
fork-2offered_100000_producer_lagarray341950016237000
fork-2offered_100000_servicereference344001304000
fork-2offered_100000_scheduled_to_donereference331410014988000
fork-2offered_100000_enqueue_to_startreference31060003116000
fork-2offered_100000_producer_lagreference319410013657000
fork-2offered_500000_servicearray39001292000
fork-2offered_500000_scheduled_to_donearray376830012197000
fork-2offered_500000_enqueue_to_startarray324340012175000
fork-2offered_500000_producer_lagarray355290011231000
fork-2offered_500000_servicereference331006650000
fork-2offered_500000_scheduled_to_donereference395590013649000
fork-2offered_500000_enqueue_to_startreference382450013559000
fork-2offered_500000_producer_lagreference34358009513000
fork-3servicereference017008653000
fork-3servicearray04001451000
fork-3offered_100000_servicereference0560038405000
fork-3offered_100000_scheduled_to_donereference09209600111188000
fork-3offered_100000_enqueue_to_startreference07348400111113000
fork-3offered_100000_producer_lagreference0490780064700000
fork-3offered_100000_servicearray01400851000
fork-3offered_100000_scheduled_to_donearray01965009565000
fork-3offered_100000_enqueue_to_startarray0569002075000
fork-3offered_100000_producer_lagarray01610008976000
fork-3offered_500000_servicereference028002865000
fork-3offered_500000_scheduled_to_donereference02640005615000
fork-3offered_500000_enqueue_to_startreference01839003986000
fork-3offered_500000_producer_lagreference0726004898000
fork-3offered_500000_servicearray0800629000
fork-3offered_500000_scheduled_to_donearray01637004199000
fork-3offered_500000_enqueue_to_startarray01139004187000
fork-3offered_500000_producer_lagarray0751003025000
fork-3servicearray140012303000
fork-3servicereference1210011458000
fork-3offered_100000_servicearray115001289000
fork-3offered_100000_scheduled_to_donearray129750015438000
fork-3offered_100000_enqueue_to_startarray11421007896000
fork-3offered_100000_producer_lagarray118880013012000
fork-3offered_100000_servicereference150001399000
fork-3offered_100000_scheduled_to_donereference113880010177000
fork-3offered_100000_enqueue_to_startreference1855005501000
fork-3offered_100000_producer_lagreference1642009879000
fork-3offered_500000_servicearray1800348000
fork-3offered_500000_scheduled_to_donearray11062005492000
fork-3offered_500000_enqueue_to_startarray1957005480000
fork-3offered_500000_producer_lagarray1398003938000
fork-3offered_500000_servicereference13700836200908
fork-3offered_500000_scheduled_to_donereference151296005364300908
fork-3offered_500000_enqueue_to_startreference130690003415600908
fork-3offered_500000_producer_lagreference134160003826000908
fork-3servicereference224009260000
fork-3servicearray24009083000
fork-3offered_100000_servicereference249004949000
fork-3offered_100000_scheduled_to_donereference2125390059430000
fork-3offered_100000_enqueue_to_startreference235170014695000
fork-3offered_100000_producer_lagreference284270058394000
fork-3offered_100000_servicearray21800806000
fork-3offered_100000_scheduled_to_donearray273300027736000
fork-3offered_100000_enqueue_to_startarray231520022012000
fork-3offered_100000_producer_lagarray245050027124000
fork-3offered_500000_servicereference222001408000
fork-3offered_500000_scheduled_to_donereference22283004989000
fork-3offered_500000_enqueue_to_startreference21940004966000
fork-3offered_500000_producer_lagreference2416002606000
fork-3offered_500000_servicearray2700684000
fork-3offered_500000_scheduled_to_donearray24194009917000
fork-3offered_500000_enqueue_to_startarray21272003481000
fork-3offered_500000_producer_lagarray23764009324000
fork-3servicearray34001240000
fork-3servicereference312004756000
fork-3offered_100000_servicearray314001178000
fork-3offered_100000_scheduled_to_donearray360720020943000
fork-3offered_100000_enqueue_to_startarray3753005666000
fork-3offered_100000_producer_lagarray357730020587000
fork-3offered_100000_servicereference332001075000
fork-3offered_100000_scheduled_to_donereference31147007021000
fork-3offered_100000_enqueue_to_startreference3553004793000
fork-3offered_100000_producer_lagreference3574006639000
fork-3offered_500000_servicearray37001153300625
fork-3offered_500000_scheduled_to_donearray32244680022845500625
fork-3offered_500000_enqueue_to_startarray343445005075700625
fork-3offered_500000_producer_lagarray32178050022488500625
fork-3offered_500000_servicereference31900900000
fork-3offered_500000_scheduled_to_donereference3982007673000
fork-3offered_500000_enqueue_to_startreference3891002279000
fork-3offered_500000_producer_lagreference3375006587000