Dated Benchmark Snapshot

Measured
performance context.

This page documents the current public FerroMatch benchmark snapshot with hardware notes, exact commands, and caveats. Use it as a reproducible reference point, not a blanket promise.

03.20
Snapshot Date
1.97M/s
Loopback Stress Snapshot
30.7ns
Fastest Observed Microbench Bound

Benchmark context

The numbers below were captured on March 20, 2026 from revision v0.2.0-1-g3c91d68.

30.7-36.9ns
criterion range
Insert + Cancel Pair
Warm core path for one insert and one cancel.
142.9-163.8ns
criterion range
Market Fill
Matching hot path for a marketable order against resting liquidity.
1.97M/s
loopback snapshot
Stress Throughput
Moderated bounded-resting TCP-to-journal workload on the same machine.
Machine
Apple M1 Pro
CPU
10 cores
Memory
16 GB
OS
macOS 26.3.1
Arch
arm64

Where FerroMatch fits today

Public comparison claims across matching engines are rarely apples-to-apples. Different systems measure different scopes: core-only, insert-only, or full door-to-door venue latency. FerroMatch is strongest today as a transparent, well-verified verified single-node core.

Open-source peer

exchange-core

Public claim

150 ns per matching and 5M operations/sec on a single order book

Measured scope

Published README benchmark on older Xeon hardware; excludes network interface latency, IPC, and journaling from the latency figure.

How to read it

FerroMatch is in the same broad core-latency conversation, but its current public end-to-end snapshot is still below this published top-end throughput claim.

Reference

exchange-core README

Open-source peer

Liquibook

Public claim

2.0M to 2.5M inserts/sec

Measured scope

Published repository benchmark for inserts per second; presented by the project as a rough order-of-magnitude estimate.

How to read it

FerroMatch’s current published 1.97M orders/sec loopback snapshot is already in the same order-of-magnitude band as this public Liquibook figure.

Reference

Liquibook README

Commercial exchange stack

Nasdaq matching technology

Public claim

sub-40 µs with a fastest 14 µs door-to-door production implementation

Measured scope

Public marketing claim for a production exchange platform with broader deployment, protocol, and operational surface than the FerroMatch baseline.

How to read it

This is a different class of claim: full commercial production latency rather than a local benchmark snapshot.

Commercial exchange stack

DXmatch

Public claim

sub-100 µs end-to-end via FIX and 500,000+ orders/sec through scalable segments

Measured scope

Public vendor claim for a modular commercial exchange stack with risk, clustering, and broader venue feature surface.

How to read it

FerroMatch is not yet competing as a like-for-like commercial venue stack; its current strength is a verified single-node matching core.

Criterion snapshot

These are the exact measured ranges, taken from the local Criterion output for the current revision.

warm_insert_cancel_pair

30.7 ns to 36.9 ns

Criterion

Criterion estimate range for warm insert/cancel on the core book path.

Result[30.678 ns 33.171 ns 36.910 ns]
Commandcargo bench --bench matching_bench -- warm_insert_cancel_pair --sample-size 10

warm_market_fill

142.9 ns to 163.8 ns

Criterion

Market-fill hot path on the same local machine and build.

Result[142.85 ns 151.76 ns 163.75 ns]
Commandcargo bench --bench matching_bench -- warm_market_fill --sample-size 10

warm_partial_match_then_rest_pair

156.6 ns to 169.0 ns

Criterion

Partial-match-then-rest path after the overflow-hardening hot-path cleanup.

Result[156.56 ns 164.87 ns 169.02 ns]
Commandcargo bench --bench matching_bench -- warm_partial_match_then_rest_pair --sample-size 10

End-to-end stress snapshot

The loopback throughput number is included for context, along with the exact server and client commands used to produce it.

bounded-resting loopback

1.97M orders/sec

Stress

Loopback stress snapshot under a moderated bounded-resting workload.

Measured result1966233 orders/sec
Server commandcargo run -p ferromatch-server --release --bin ferromatch-server -- --port 19876 --symbol TEST --io-workers 4 --engine-core 0 --publisher-core 1 --channel-size 262144 --outbound-buffer 4096 --journal-path /tmp/ferromatch_bench.journal --journal-capacity 8388608 --max-inbound-messages-per-sec 1000000 --max-inbound-burst 65536 --global-inbound-pressure-pct 100
Client commandcargo run -p ferromatch-server --release --bin stress -- --addr 127.0.0.1:19876 --clients 10 --orders-per-client 10000 --warmup 100 --pipeline 16 --workload bounded-resting

How to read these numbers

!

This is a dated local snapshot, not a universal SLA or guarantee.

!

Measurements were taken on macOS loopback, not a tuned Linux production host.

!

Core pinning flags were requested during server startup, but affinity pinning did not take effect on this macOS machine.

!

The throughput run used relaxed inbound-admission settings to observe the pipeline rather than default protective limits.

!

More aggressive client counts and pipeline depth can trip the real bounded-admission safety rails before the server saturates CPU.