Pazarlama iddiaları değil, ölçülen sonuçlar. Tüm kıyaslamalar GCC 13.3, 100.000 yineleme, CPU sabitlenmiş Linux üzerinde çalışır.
Temel FIX işlemleri arasında birebir karşılaştırma.
Dört birleştirme aşamasında 730ns'den 246ns'ye nasıl gittik.
Std::string kopyalarını orijinal arabellekte std::span<const char> görünümleriyle değiştirin. Bir std::span yığında 16 bayttır. Yığın yok, kopya yok, yıkıcı yok.
std::map<int, std::string>'i önceden indekslenmiş bir diziyle değiştirin. Saha erişimi, FIX etiket numarasıyla indekslenen tek bir hareket talimatı haline gelir.
AVX2 vektörize SOH sınırlayıcı taraması, döngü başına 32 bayt işler. Bayt bayt taramadan ~13 kat daha hızlı.
consteval alan ofset tabloları ve 22 derleme zamanı arama tablosu, numaralandırma/tür dönüşümü için ~300 çalışma zamanı dalını ortadan kaldırır.
Sıcak yolda bir NewOrderSingle mesajını işlemek.
3 kat performans sağlayan tasarım kararları.
| Teknik | QuickFIX | NexusFIX |
|---|---|---|
| Bellek | Mesaj başına yığın tahsisi | Sıfır kopya std::span görünümleri |
| Alan Arama | O(log n) std::map | O(1) doğrudan dizi indeksleme |
| Ayrıştırma | Bayt-bayt tarama | AVX2 SIMD vektörleştirilmiş |
| Alan Uzaklıkları | Çalışma zamanı hesaplama | derleme zamanını ayarlama |
| Enum Dönüşümü | Çalışma zamanı anahtarı (~300 dal) | 22 derleme zamanı arama tablosu |
| Hata İşleme | İstisnalar | std::beklenen (atma yok) |
11 endüstri lideri kütüphane incelendi. Ne öğrendik, ne inşa ettik, ne ölçtük.
O(n) yineleyici araması, yoğun FIX paketleri için yetersizdir
consteval alan ofsetleri + O(1) doğrudan indeksleme
SIMD inceleme ve H2 parmak izleriyle İsviçre Tabloları
absl::oturum deposu içinflat_hash_map
Ertelenmiş biçimlendirmeyle kilitsiz SPSC kuyruğu
Günlük arka ucu olarak Quill
7ns günlük kaydı için ikili kodlama + arka plan iş parçacığı
Statik ikili serileştirmeyle Ertelenmişİşlemci<T>
DEFER_TASKRUN, çekirdek görevi uyandırmalarını ortadan kaldırır
io_uring + kayıtlı arabellekler + çoklu atış
Talimat setleri arasında taşınabilir SIMD soyutlaması
FIX kalıpları için elle ayarlanmış içsel bilgiler
Hiçbir şey paylaşma reaktörü yüksek eşzamanlı G/Ç
Çekirdek sabitleme + kilitsiz ardışık düzen
Gelişmiş bellek koruması ve kilitsiz temel öğeler
Yerel SPSC kuyruğu + bit maskeleme doğrulama
Önbellek hattı dolgusu yanlış paylaşımı ortadan kaldırır
Aynı tekniklerle yerel SPSCQueue
Matematik işlemleri için genel SIMD sarmalayıcıları
SOH taraması için doğrudan Intel özellikleri
Monotonik tampon, mesaj başına arena tahsisine olanak tanır
std::pmr::monotonic_buffer_resource
Karşılaştırmaları kendiniz oluşturup çalıştırmanız için üç komut.
$ git clone https://github.com/StratCraftsAI/NexusFix.git $ cd NexusFix $ ./start.sh build # 2m18s · release $ ./start.sh bench running 100,000 iterations · cpu pinned · warm cache ExecutionReport parse 246 ns p99 258 ns NewOrderSingle parse 229 ns p99 241 ns field_access 11 ns throughput 4.17 M msg/s ✓ csv written to ./out/bench-2026-05-17.csv