A low-latency, high-throughput FIX (Financial Information eXchange) engine designed for ultra-fast message parsing and serialization with near-zero garbage production.
Urchen is built for HFT, market-making, and any performance-critical trading infrastructure. Its architecture emphasizes:
- Deterministic latency
- Zero-GC data paths
- Batch-oriented parsing/serialization
- Mechanical sympathy and cache-aware design
- Zero-GC FIX codec for minimal runtime pauses
- High-throughput batch parsers for processing millions of messages efficiently
- Optimized serialization pipeline
- Supports standard FIX dictionaries with extensibility
- Lock-free internal architecture
- JMH-based benchmarking suite
The following benchmarks were executed using JMH. Throughput is measured in operations per microsecond (ops/us).
| Benchmark Name | Mode | Cnt | Score | Error | Units |
|---|---|---|---|---|---|
FixCodecZeroGCBenchmark.batchParseOnly_ZeroGC |
thrpt | 5 | ≈ 10⁻⁵ | — | ops/us |
FixCodecZeroGCBenchmark.batchParseSerialize_ZeroGC |
thrpt | 5 | ≈ 10⁻⁶ | — | ops/us |
FixCodecZeroGCBenchmark.batchSerializeOnly_ZeroGC |
thrpt | 5 | ≈ 10⁻⁶ | — | ops/us |
Interpretation:
- The engine is capable of extremely fine-grained message handling.
- Parse-only mode achieves the highest throughput.
- Serialization and combined parse+serialize modes maintain microsecond‑level consistency.
git clone https://github.com/your-org/urchen-fix-engine.git
cd urchen-fix-engine
./gradlew buildFixSession session = FixSession.builder()
.withSenderCompId("SENDER")
.withTargetCompId("TARGET")
.build();FixMessage msg = FixCodec.parse(rawBytes);byte[] bytes = FixCodec.serialize(msg);- Session parameters
- Heartbeat intervals
- FIX version dictionaries
- Batch size tuning
- Low-level buffer allocations for zero-GC mode
Run the included JMH benchmarks:
./gradlew jmh- Full FIXT 1.1 support
- Persistent session state store
- Hardware-offload experiments (IO_uring, DPDK)
- SIMD-accelerated parsing
Restricted Commercial Only
For support or integration assistance, contact the Urchen development team.