← NexusFIX/Benchmarks
Benchmarks · v1.8 · Mayıs 2026

Performans
Karşılaştırmaları.

Pazarlama iddiaları değil, ölçülen sonuçlar. Tüm kıyaslamalar GCC 13.3, 100.000 yineleme, CPU sabitlenmiş Linux üzerinde çalışır.

ExecutionReport Parse
246 ns
QuickFIX 730 ns3,0 kat daha hızlı
Verim
4,17 milyon mesaj/sn
QuickFIX 1,19 milyon msg/sn3,5 kat daha yüksek
P99 Gecikme
258 ns
QuickFIX 784 ns3,0 kat daha düşük
Yığın Tahsisi / mesaj
0
QuickFIX ~12 (std::string, std::map düğümleri)arena yeniden kullanım

NexusFIX ile QuickFIX.

Temel FIX işlemleri arasında birebir karşılaştırma.

Metrik
QuickFIX
NexusFIX
İyileştirme
ExecutionReport Parse
730 ns
246 ns
3,0 kat daha hızlı
NewOrderSingle Ayrıştırma
661 ns
229 ns
2,9 kat daha hızlı
Alan Erişimi (4 alan)
31 ns
11 ns
2.9x faster
Verim
1,19 milyon msg/sn
4,17 milyon mesaj/sn
3,5 kat daha yüksek
P99 Gecikme
784 ns
258 ns
3,0 kat daha düşük

Optimizasyon Yolculuğu.

Dört birleştirme aşamasında 730ns'den 246ns'ye nasıl gittik.

200 ns400 ns600 ns730 nstemelTEMEL520 ns−210AŞAMA 1380 ns−140AŞAMA 2290 ns−90AŞAMA 3246 ns−44AŞAMA 4TOPLAM · -484NS · 3.0× DAHA HIZLI
1 Aşama 1: Sıfır Kopya Ayrıştırma
730ns → 520ns

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.

2 Aşama 2: O(1) Alan Arama
520ns → 380ns

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.

3 Aşama 3: SIMD Sınırlayıcı Taraması
380ns → 290ns

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ı.

4 Aşama 4: Derleme Zamanı Dengeleri
290ns → 246ns

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ıfır Tahsis Kanıtı.

Sıcak yolda bir NewOrderSingle mesajını işlemek.

QuickFIX /order-flow sıcak yol
~12 yığın tahsisi
Yığın Tahsisi
~12 (std::string, std::map düğümleri)
Alan Depolama
std::map<int, std::string> kopyalar
Ayrıştırma Mantığı
Çalışma zamanı haritası ekleme
Bellek Ayak İzi
Dinamik, tahmin edilemez
Yıkıcı Ek Yükü
~12 std::string yıkıcılar
HEAP · mesaj başına12 tahsis
0x7f3a..0000dağınık
NexusFIX /order-flow sıcak yol
0 tahsis · arena yeniden kullanım
Yığın Tahsisi
0
Alan Depolama
std::span görünümleri orijinal ara belleğe
Ayrıştırma Mantığı
Derleme zamanı uzaklık tablosu
Bellek Ayak İzi
Statik, önceden tahsis edilmiş PMR havuzu
Yıkıcı Ek Yükü
0 (sahip olunan bellek yok)
ARENA · mesaj başına0 tahsis
0x0001..a000bitişik · yeniden kullanılmış

Teknik Karşılaştırma.

3 kat performans sağlayan tasarım kararları.

TeknikQuickFIXNexusFIX
BellekMesaj başına yığın tahsisiSıfır kopya std::span görünümleri
Alan AramaO(log n) std::mapO(1) doğrudan dizi indeksleme
AyrıştırmaBayt-bayt taramaAVX2 SIMD vektörleştirilmiş
Alan UzaklıklarıÇalışma zamanı hesaplamaderleme zamanını ayarlama
Enum DönüşümüÇalışma zamanı anahtarı (~300 dal)22 derleme zamanı arama tablosu
Hata İşlemeİstisnalarstd::beklenen (atma yok)

Mimarlık Etkileri.

11 endüstri lideri kütüphane incelendi. Ne öğrendik, ne inşa ettik, ne ölçtük.

hffix
Ne Öğrendik

O(n) yineleyici araması, yoğun FIX paketleri için yetersizdir

Ne İnşa ettik

consteval alan ofsetleri + O(1) doğrudan indeksleme

14ns alan erişimi
Sonuç
Abseil
Ne Öğrendik

SIMD inceleme ve H2 parmak izleriyle İsviçre Tabloları

Ne İnşa ettik

absl::oturum deposu içinflat_hash_map

%31 daha hızlı aramalar
Sonuç
Quill
Ne Öğrendik

Ertelenmiş biçimlendirmeyle kilitsiz SPSC kuyruğu

Ne İnşa ettik

Günlük arka ucu olarak Quill

8ns medyan günlük gecikmesi
Sonuç
NanoLog
Ne Öğrendik

7ns günlük kaydı için ikili kodlama + arka plan iş parçacığı

Ne İnşa ettik

Statik ikili serileştirmeyle Ertelenmişİşlemci<T>

%84 azalma (75→12ns)
Sonuç
liburing
Ne Öğrendik

DEFER_TASKRUN, çekirdek görevi uyandırmalarını ortadan kaldırır

Ne İnşa ettik

io_uring + kayıtlı arabellekler + çoklu atış

%7-27 daha hızlı I/O
Sonuç
Otoyol
Ne Öğrendik

Talimat setleri arasında taşınabilir SIMD soyutlaması

Ne İnşa ettik

FIX kalıpları için elle ayarlanmış içsel bilgiler

13 kat verim
Sonuç
Seastar
Ne Öğrendik

Hiçbir şey paylaşma reaktörü yüksek eşzamanlı G/Ç

Ne İnşa ettik

Çekirdek sabitleme + kilitsiz ardışık düzen

%8 P99 iyileştirme
Sonuç
Aptallık
Ne Öğrendik

Gelişmiş bellek koruması ve kilitsiz temel öğeler

Ne İnşa ettik

Yerel SPSC kuyruğu + bit maskeleme doğrulama

Sıfır bağımlılık
Sonuç
Rigtorp
Ne Öğrendik

Önbellek hattı dolgusu yanlış paylaşımı ortadan kaldırır

Ne İnşa ettik

Aynı tekniklerle yerel SPSCQueue

88M işlem/sn, 11ns
Sonuç
xsimd
Ne Öğrendik

Matematik işlemleri için genel SIMD sarmalayıcıları

Ne İnşa ettik

SOH taraması için doğrudan Intel özellikleri

2 kat daha hızlı sarmalayıcılar
Sonuç
Boost.PMR
Ne Öğrendik

Monotonik tampon, mesaj başına arena tahsisine olanak tanır

Ne İnşa ettik

std::pmr::monotonic_buffer_resource

Sıfır yığın tahsisi
Sonuç

NexusFIX'i Denemeye Hazır mısınız?

Karşılaştırmaları kendiniz oluşturup çalıştırmanız için üç komut.

~/dev. Bench
$ 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