Etkileşimli S&C · v1.8 · kaynağa dayalı

Motorun
kendisine sorun.

NexusFIX mimarisi, mesaj sözlükleri, venue profilleri ve benchmark paketine konuşma temelli arayüz. 182 uzman yanıtlı soru indekslenmiş ve canlı kod tabanına dayanır. Hazır yanıt yeterli olmadığında canlı thread var.

182
Uzman yanıtı
8
Kategori
v1.8
İndekslenmiş build
< 2sn
Medyan yanıt
NexusFIX uzmanı v1.8
İndeksleme hedefi main@a4f29d1 · 12 dk önce
NF

Merhaba, ben NexusFIX uzmanıyım. Kamuya açık kaynak, benchmark CSV'leri ve bu sayfada indekslenmiş 182 seçili yanıta dayanırım.

Sağdan bir thread seçin veya aşağıda her şeyi sorun. Yanıt kaynakta yoksa, bunu söylerim.

Neden QuickFIX değil?
Sıfır tahsisli sıcak yol
SIMD ayrıştırma açıklandı
Hangi C++23 özellikleri?
Üretim hazırlığı
12:04:18 · indekslendi
YOU

NexusFIX sıfır heap tahsisini nasıl başarıyor?

12:04:31
NF

Sıcak yolda üç ikame, hepsi:

1. Orijinal arabelleğe yönelik std::span<const char> görünümleri, std::string kopyalarının yerini alır. Span yığında 16 bayttır. Heap yok, kopya yok, yıkıcı yok.

2. Alan araması için std::map yerine önceden indekslenmiş bir dizi gelir. Alan erişimi, FIX etiket numarasıyla indekslenmiş tek bir mov olur.

3. std::pmr::monotonic_buffer_resource, gerçekten yuvaya ihtiyacı olan her şey için arena tahsisi sağlar. Arena önceden boyutlandırılmıştır ve oturum başına yeniden kullanılır.

Sonuç: sıcak yolda 0 malloc çağrısı; her alloc/free'yi enstrümante eden ve herhangi biri tetiklendiğinde testi başarısız kılan özel bir ayırıcıyla doğrulanmıştır.

Enstrümantasyonu göster
Arena boyutu ve taşma
Soğuk yol tahsisleri
12:04:32 · 312 ms · kaynak parser/arena.hpp
gönder · ⇧ ↵ yeni satırŞuna dayalı main@a4f29d1 · v1.8

Sıkça sorulan, indekslenmiş.

Neredeyse her sohbette çıkan sekiz soru. Genişletmek için tıklayın. Ya da yukarıdaki canlı thread'e geri taşıyın.

Q · 001MotivasyonNeden NexusFIX'i inşa ettin? Neden sadece QuickFIX'i kullanmadın?+

QuickFIX 2000'lerin başında C++98/03 deyimleri etrafında tasarlanmıştır: sanal dağıtım, mesaj başına heap tahsisi, string tabanlı alan depolama. Bu desenler, alt mikro saniye gecikme ile temelden uyumsuzdur.

QuickFIX tasarlandığında var olmayan C++23 yeteneklerini kullanarak ilk ilkelerden başladık. Std::span, std::expected, std::pmr, kavramlar ve consteval. Ve şunu sorduk: yirmi yıllık ayırıcı kararlarını taşımasaydın FIX motoru nasıl görünürdü?

Canlı thread'de sor →
Q · 002KitleNexusFIX'in hedef kitlesi kimdir?+

Deterministik, alt mikro saniye FIX mesaj işlemesine ihtiyaç duyan kantitatif ticaret firmaları ve altyapı ekipleri.

Özellikle: ortak yerleşik stratejiler işleten firmalar, özel ticaret ağ geçitleri inşa eden ekipler ve gerçek, kamuya açık bir kod tabanında modern performans tekniklerini inceleyen C++ mühendisleri.

Canlı thread'de sor →
Q · 003PerformansNexusFIX sıfır heap tahsisini nasıl başarıyor?+

Orijinal arabelleğe yönelik std::span görünümleri std::string kopyalarının yerini alır. Önceden indekslenmiş diziler std::map'in yerini alır. std::pmr::monotonic_buffer_resource arena tahsisi sağlar.

Sonuç: sıcak yolda sıfır malloc çağrısı; her CI yapısında çalışan özel ayırıcı enstrümantasyon koşum takımıyla doğrulanmıştır.

Canlı thread'de sor →
Q · 004C++23NexusFIX hangi C++23 özelliklerini kullanıyor?+

Hata işleme için std::expected (sıcak yolda istisna yok), sıfır kopya veri görünümleri için std::span, derleme zamanı arabirim doğrulaması için kavramlar, derleme zamanı hesaplama için consteval ve [[likely]]/[[unlikely]] dal ipuçları.

Bunların her biri QuickFIX döneminde özel bir uygulama gerektirirdi.

Canlı thread'de sor →
Q · 005SIMDSIMD ayrıştırma nasıl çalışır?+

AVX2 komutları aynı anda 32 bayt yükler ve SOH (\x01) ayırıcılarını paralel bulmak için vektörleştirilmiş karşılaştırma kullanır. Bu, bayt bayt taramadan yaklaşık 13× daha hızlıdır.

Teknik simdjson'dan ilham alınmış ancak FIX protokolü semantiğine uyarlanmıştır. Yani, tag=value=SOH yapısı, tek bir vektörleştirilmiş geçişte her alan sınırını bulabileceğimiz ve ardından ofset tablosunu oluşturabileceğimiz anlamına gelir.

Canlı thread'de sor →
Q · 006FIXHangi FIX sürümleri destekleniyor?+

FIX 4.4 tam destekli ve üretimde en yaygın olanı. FIX 5.0 + FIXT 1.1 de tam destekli ve 4.4'e göre yalnızca %2 ek yük getirir.

Yapısal indeks sürümden bağımsızdır. Alan taraması FIX sürümleri arasında özdeş çalışır. Özel lehçe kaplamaları, oturum bağlama anında borsa-spesifik etiketleri işler.

Canlı thread'de sor →
Q · 007ÜretimNexusFIX üretime hazır mı?+

NexusFIX aktif geliştirmededir ve henüz üretim ticaret ortamlarına dağıtılmamıştır. Karşılaştırmalar, CPU sabitleme ve önbellek ısıtma ile kontrollü ortamlardan alınmıştır.

Üretim sertleştirmesi. Yük testleri, hata modu kapsamı, belirli borsa ağ geçitlerine karşı sertifikasyon. Ayrı bir mühendislik çabasıdır. Üretim için düşünüyorsanız önce bizimle konuşun.

Canlı thread'de sor →
Q · 008KarşılaştırmaNexusFIX, Fix8 ile nasıl karşılaştırılır?+

Fix8 (C++11) nesne havuzları ve sıfır kopya teknikleri kullanır ve daha sofistike açık FIX motorlarından biridir.

NexusFIX, özel uygulamalar yerine C++23 standart kitaplık özelliklerinden (PMR, std::span, std::expected) yararlanarak farklılık gösterir. Denetlenecek daha az hareketli parça. Ve Fix8'in sahip olmadığı SIMD hızlandırmalı ayrıştırmayı ekler.

Canlı thread'de sor →

İndeks dışı bir sorunuz mu var?

Yukarıdaki canlı thread'de sorun. Veya GitHub'da bir issue açın. Kaynaklı ve faydalı yanıt alan her soru, sonraki sürümde indekslenmiş sete dahil olur.