LibHFTDocumentationBenchmarksFull-session comparisons

Current full-session matched evidence

Four-flow FIX session comparisons.

Four-flow FIX session comparisons on two physical DAC rigs retain each collection's workload, clock and publication gates. Passing comparisons on both rigs: LibHFT CORE callback clock / NexusFIX; LibHFT Rust complete RTT / callback, first CPU / NanoFIX complete RTT / callback, first CPU. Reports retaining failed gates: LibHFT Rust open / NanoFIX; LibHFT Rust open / TrueFix; LibHFT CORE before-parser clock / NexusFIX; LibHFT Java Pure callback / Philadelphia-fast callback; LibHFT public managed .NET 10, first CPU / QuickFIX/n parsing-only .NET 10, first CPU; LibHFT public Java callback replies, split CPUs / Philadelphia-fast callback, split CPUs; LibHFT public Java callback replies, split CPUs (previous source) / Philadelphia-fast callback, split CPUs.

Source revision 87e4e16885d62026-10-14

Read each rig separately

These are kernel TCP, no-store canonical session comparisons: 1,000 warmup cycles, 10,000 measured cycles per run, three runs per flow and a target of 10,000 cycles/s. HP uses a Solarflare physical DAC and SCAN a Mellanox physical DAC, each between two namespaces on one machine. These are accepted Stage 5 topologies for this campaign.

p50, p99 and p99.9 are medians of the three run percentiles. Worst is the maximum of all three run extrema. Blocked flows have no latency or ratio. A passing individual flow does not admit a whole-language comparison. The archive preserves original bodies, owner counts, administration, primary/delay samples, packet-counter polling and independent cold receipts.

The engine comparison by language covers C++, C, Java, .NET, Rust and Go. This page shows the latest independently matched reports; other retained language results remain in that roster and archive.

Download every matched decision and source binding →

.NET Pure public session

Managed SDK physical results

24 admitted complete-RTT/callback cells: hp 4/4 flows, scan 4/4 flows. These use public ManagedSession and IFastHandler, with SDK encoding, session state and completed writes. The native engine library remains unloaded. Individual cells do not admit a current .NET peer comparison.

ConfigurationHP collectionSCAN collection
Inherited foreground CPUs4/4 in one generationno complete generation; 4/4 retained
First allowed foreground CPU4/4 in one generation4/4 in one generation
First allowed foreground CPU, .NET 104/4 in one generation4/4 in one generation

Retained good cells may come from different source generations. A failed fresh flow keeps its earlier good cell; it cannot complete the failed collection.

The explicit .NET 10 managed configuration passes all four Stage 5 flows on both rigs and has its own source/generation. Its eight cells remain separate from the original runtime. QuickFIX/n’s separately qualified parsing-only profile passes NOS and tick on HP’s first foreground CPU; its other physical flows retain report failures. The independently replayed .NET comparison below keeps those failed flows blocked and publishes metrics only for the two qualified HP flow pairs. The complete two-rig .NET comparison remains blocked. Inspect exact physical outcomes and remaining gates →

Inspect result summaries and percentiles → · Latest complete physical outcomes and failed gates → · Retained first listener failure → · Earlier first-CPU outcomes and retained mixed rate failure →

Compact source 41f8706e3354.

.NET public handler clocks

Independent Native .NET physical results

16 admitted complete-RTT/monotonic-handler cells: hp 8, scan 8. These individual cells do not establish a current .NET peer comparison. Each flavour is a separate configuration; passing cells across configurations are never merged.

ConfigurationHP collectionSCAN collection
Inherited foreground CPUs4/4 in one generationno complete generation; 4/4 retained
First allowed foreground CPU4/4 in one generation4/4 in one generation

Retained good cells may come from different source generations. A failed fresh flow keeps its earlier good cell; it cannot complete the failed collection.

Inspect result summaries and percentiles → · Latest complete physical outcomes → · First-CPU outcomes and failed gates →

Compact source 41f8706e3354.

Corrected Rust clocks

New independent physical results

35 admitted callback/complete-RTT cells: hp 19, scan 16. Individual results do not admit a complete matched comparison. The separately verified first-CPU comparison below has its own current grade; retired reports remain superseded.

Inspect result summaries and percentiles → · Rust/NanoFIX physical gates → · TrueFix physical gates →

Compact source 41f8706e3354.

Rust

LibHFT Rust open / NanoFIX

All-four-flow comparison: blocked. Every metric cell is baseline / peer, in microseconds.

hp/sfc-DAC/same-host-netns

FlowMatched gatep50 µsp99 µsp99.9 µsWorst µsBlockers
nos_erblocked————rust-canonical-clock-boundaries-20261017
mdblocked————rust-canonical-clock-boundaries-20261017
md_nos_erblocked————rust-canonical-clock-boundaries-20261017
tick_to_tradeblocked————rust-canonical-clock-boundaries-20261017

scan/mlx5-DAC/same-host-netns

FlowMatched gatep50 µsp99 µsp99.9 µsWorst µsBlockers
nos_erblocked————rust-canonical-clock-boundaries-20261017
mdblocked————rust-canonical-clock-boundaries-20261017
md_nos_erblocked————rust-canonical-clock-boundaries-20261017
tick_to_tradeblocked————rust-canonical-clock-boundaries-20261017

Superseded: legacy Rust canonical clocks omit required parsing/extraction work. Corrected callback results use separate identities. Original archived grades and bytes are preserved. Supersession record →

The HP comparison receipts were written before the SSH transport ended; its original final marker is absent. The frozen source inventory was independently verified unchanged. The missing marker is preserved in the source record.

Complete matched report JSON → · Immutable retention seal →

Rust

LibHFT Rust open / TrueFix

All-four-flow comparison: blocked. Every metric cell is baseline / peer, in microseconds.

hp/sfc-DAC/same-host-netns

FlowMatched gatep50 µsp99 µsp99.9 µsWorst µsBlockers
nos_erblocked————rust-canonical-clock-boundaries-20261017
mdblocked————rust-canonical-clock-boundaries-20261017
md_nos_erblocked————peer:achieved_rate_below_98pct; rust-canonical-clock-boundaries-20261017
tick_to_tradeblocked————rust-canonical-clock-boundaries-20261017

scan/mlx5-DAC/same-host-netns

FlowMatched gatep50 µsp99 µsp99.9 µsWorst µsBlockers
nos_erblocked————rust-canonical-clock-boundaries-20261017
mdblocked————peer:achieved_rate_below_98pct; rust-canonical-clock-boundaries-20261017
md_nos_erblocked————peer:achieved_rate_below_98pct;scheduler_delay_above_interval; rust-canonical-clock-boundaries-20261017
tick_to_tradeblocked————rust-canonical-clock-boundaries-20261017

Superseded: legacy Rust canonical clocks omit required parsing/extraction work. Corrected callback results use separate identities. Original archived grades and bytes are preserved. Supersession record →

The HP comparison receipts were written before the SSH transport ended; its original final marker is absent. The frozen source inventory was independently verified unchanged. The missing marker is preserved in the source record.

Complete matched report JSON → · Immutable retention seal →

C++

LibHFT CORE before-parser clock / NexusFIX

All-four-flow comparison: blocked. Every metric cell is baseline / peer, in microseconds.

hp/sfc-DAC/same-host-netns

FlowMatched gatep50 µsp99 µsp99.9 µsWorst µsBlockers
nos_erpass17.413 / 20.81024.037 / 33.25428.640 / 38.274101.206 / 167.740
mdpass34.388 / 24.99141.075 / 37.90550.713 / 43.70582.662 / 97.064
md_nos_erpass53.933 / 42.02363.693 / 57.00478.433 / 72.311107.677 / 215.297
tick_to_tradeblocked————tick_receive_spans_differ

scan/mlx5-DAC/same-host-netns

FlowMatched gatep50 µsp99 µsp99.9 µsWorst µsBlockers
nos_erpass27.905 / 30.57045.130 / 57.70853.565 / 64.678121.130 / 124.935
mdpass51.576 / 36.10367.426 / 62.41976.997 / 68.780118.093 / 167.502
md_nos_erpass82.316 / 62.158108.132 / 97.252121.950 / 149.359162.812 / 187.832
tick_to_tradeblocked————tick_receive_spans_differ

Complete matched report JSON → · Immutable retention seal →

C++

LibHFT CORE callback clock / NexusFIX

All-four-flow comparison: pass. Every metric cell is baseline / peer, in microseconds.

hp/sfc-DAC/same-host-netns

FlowMatched gatep50 µsp99 µsp99.9 µsWorst µsBlockers
nos_erpass17.579 / 20.81024.674 / 33.25431.779 / 38.274143.285 / 167.740
mdpass34.546 / 24.99141.986 / 37.90554.767 / 43.705143.017 / 97.064
md_nos_erpass54.092 / 42.02365.184 / 57.00485.433 / 72.311146.394 / 215.297
tick_to_tradepass13.824 / 18.45620.764 / 25.61528.484 / 29.063113.314 / 107.140

scan/mlx5-DAC/same-host-netns

FlowMatched gatep50 µsp99 µsp99.9 µsWorst µsBlockers
nos_erpass28.344 / 30.57044.822 / 57.70854.104 / 64.678150.401 / 124.935
mdpass50.956 / 36.10368.869 / 62.41980.620 / 68.780158.862 / 167.502
md_nos_erpass82.433 / 62.158107.769 / 97.252121.973 / 149.359176.256 / 187.832
tick_to_tradepass22.795 / 28.65939.560 / 44.81044.944 / 50.96959.215 / 147.938

Complete matched report JSON → · Immutable retention seal →

Java

LibHFT Java Pure callback / Philadelphia-fast callback

All-four-flow comparison: blocked. Every metric cell is baseline / peer, in microseconds.

hp/sfc-DAC/same-host-netns

FlowMatched gatep50 µsp99 µsp99.9 µsWorst µsBlockers
nos_erblocked————baseline_report_gate; peer_report_gate
mdblocked————baseline_report_gate
md_nos_erblocked————baseline_report_gate
tick_to_tradeblocked————baseline_report_gate; peer_report_gate

scan/mlx5-DAC/same-host-netns

FlowMatched gatep50 µsp99 µsp99.9 µsWorst µsBlockers
nos_erblocked————baseline_report_gate; peer_report_gate
mdblocked————baseline_report_gate; peer_report_gate
md_nos_erblocked————baseline_report_gate; peer_report_gate
tick_to_tradeblocked————baseline_report_gate; peer_report_gate

Complete matched report JSON → · Immutable retention seal →

.NET

LibHFT public managed .NET 10, first CPU / QuickFIX/n parsing-only .NET 10, first CPU

All-four-flow comparison: blocked. Every metric cell is baseline / peer, in microseconds.

hp/sfc-DAC/same-host-netns

FlowMatched gatep50 µsp99 µsp99.9 µsWorst µsBlockers
nos_erpass21.736 / 62.67027.822 / 65.29434.552 / 209.883669.794 / 6217.287
mdblocked————peer:achieved_rate_below_98pct
md_nos_erblocked————peer:achieved_rate_below_98pct;scheduler_delay_above_interval
tick_to_tradepass20.222 / 47.91024.930 / 50.21031.631 / 196.59339.938 / 6134.838

scan/mlx5-DAC/same-host-netns

FlowMatched gatep50 µsp99 µsp99.9 µsWorst µsBlockers
nos_erblocked————peer:achieved_rate_below_98pct
mdblocked————peer:achieved_rate_below_98pct;scheduler_delay_above_interval
md_nos_erblocked————peer:achieved_rate_below_98pct;scheduler_delay_above_interval
tick_to_tradeblocked————peer:achieved_rate_below_98pct

Complete matched report JSON → · Physical collection and independent replay → · Source 41f8706e3354, SHA-256 ec8305a6ce7f7462ef221b519803ecff6a84015e2bd52791347293104e6fe99d

Java

LibHFT public Java callback replies, split CPUs / Philadelphia-fast callback, split CPUs

All-four-flow comparison: blocked. Every metric cell is baseline / peer, in microseconds.

hp/sfc-DAC/same-host-netns

FlowMatched gatep50 µsp99 µsp99.9 µsWorst µsBlockers
nos_erblocked————baseline_report_gate
mdpass52.187 / 24.669116.032 / 45.076158.225 / 73.76311260.111 / 1986.154
md_nos_erblocked————baseline_report_gate; peer_report_gate
tick_to_tradepass30.930 / 15.76575.084 / 30.729128.242 / 49.4386133.081 / 132.984

scan/mlx5-DAC/same-host-netns

FlowMatched gatep50 µsp99 µsp99.9 µsWorst µsBlockers
nos_erblocked————baseline_report_gate
mdblocked————baseline_report_gate
md_nos_erblocked————baseline_report_gate; peer_report_gate
tick_to_tradeblocked————baseline_report_gate; peer_report_gate

Complete matched report JSON → · Physical collection and independent replay → · Source 41f8706e3354, SHA-256 a91e30342276f29d75189b8779966fa877c660cd03f6d87227fd8de7607a444f

Java

LibHFT public Java callback replies, split CPUs (previous source) / Philadelphia-fast callback, split CPUs

All-four-flow comparison: blocked. Every metric cell is baseline / peer, in microseconds.

hp/sfc-DAC/same-host-netns

FlowMatched gatep50 µsp99 µsp99.9 µsWorst µsBlockers
nos_erblocked————java-callback-source-superseded-20261017
mdblocked————java-callback-source-superseded-20261017
md_nos_erblocked————baseline_report_gate; peer_report_gate; java-callback-source-superseded-20261017
tick_to_tradeblocked————java-callback-source-superseded-20261017

scan/mlx5-DAC/same-host-netns

FlowMatched gatep50 µsp99 µsp99.9 µsWorst µsBlockers
nos_erblocked————baseline_report_gate; java-callback-source-superseded-20261017
mdblocked————baseline_report_gate; java-callback-source-superseded-20261017
md_nos_erblocked————baseline_report_gate; peer_report_gate; java-callback-source-superseded-20261017
tick_to_tradeblocked————baseline_report_gate; java-callback-source-superseded-20261017

Superseded: newer passing compact cells replace this source. The independently replayed numeric comparison has its own source, products and failed gates. Original archived grades and bytes are preserved. Supersession record →

Complete matched report JSON → · Physical collection and independent replay → · Source 41f8706e3354, SHA-256 3a6b279b15b7ab090f4f9cab84831309b432bb4c68785e3d0c9da68595e46cfd

Rust

LibHFT Rust complete RTT / callback, first CPU / NanoFIX complete RTT / callback, first CPU

All-four-flow comparison: pass. Every metric cell is baseline / peer, in microseconds.

hp/sfc-DAC/same-host-netns

FlowMatched gatep50 µsp99 µsp99.9 µsWorst µsBlockers
nos_erpass21.347 / 21.46622.896 / 23.06028.593 / 29.52941.543 / 56.536
mdpass30.561 / 29.97631.999 / 31.14239.456 / 38.56052.746 / 62.526
md_nos_erpass51.890 / 47.43553.562 / 49.00563.768 / 58.79072.645 / 112.333
tick_to_tradepass14.874 / 19.98816.312 / 21.35323.107 / 28.14630.614 / 34.026

scan/mlx5-DAC/same-host-netns

FlowMatched gatep50 µsp99 µsp99.9 µsWorst µsBlockers
nos_erpass32.280 / 34.48346.600 / 43.94050.617 / 52.20776.356 / 100.733
mdpass44.513 / 45.17059.395 / 54.75063.832 / 63.20685.434 / 98.521
md_nos_erpass76.906 / 68.81894.441 / 91.549103.380 / 97.068116.330 / 143.910
tick_to_tradepass23.770 / 32.19738.220 / 39.38241.050 / 48.06748.390 / 57.741

Complete matched report JSON → · Physical collection and independent replay → · Source 41f8706e3354, SHA-256 9af1f97d8c628afbf12ce2e6776d114fb9e15fc72f0b3dd8ce0b51be2a192df8