StratCraft

互動問答

182 個專家解答,涵蓋架構、效能、C++23 技術和專案路線圖。

常見問題

是什麼促使您建構 NexusFIX?為何不直接使用 QuickFIX?
QuickFIX 是基於 C++98/03 慣用模式設計的:虛擬分派、每訊息堆積分配、字串欄位儲存。這些模式從根本上與亞微秒延遲要求不相容。我們從第一原則出發,使用 QuickFIX 設計時尚不存在的 C++23 功能。
NexusFIX 的目標受眾是誰?
需要確定性、亞微秒 FIX 訊息處理的量化交易公司和基礎設施團隊。具體包括:運行共置策略的公司、建構自訂交易閘道的團隊,以及研究現代效能技術的 C++ 工程師。
NexusFIX 如何實現零堆積分配?
std::span<const char> 視圖指向原始緩衝區,取代 std::string 拷貝。預索引陣列取代 std::map。std::pmr::monotonic_buffer_resource 提供 arena 分配。結果:熱路徑上零 malloc 呼叫,透過自訂分配器測量驗證。
NexusFIX 使用了哪些 C++23 功能?
std::expected 用於錯誤處理(熱路徑無例外),std::span 用於零拷貝資料視圖,concepts 用於編譯期介面驗證,consteval 用於編譯期計算,以及 [[likely]]/[[unlikely]] 分支提示。
SIMD 解析如何運作?
AVX2 指令一次載入 32 位元組,並使用向量化比較並行尋找 SOH(\\x01)分隔符。這比逐位元組掃描快約 13 倍。該技術受 simdjson 啟發,但針對 FIX 協定語意進行了調整。
支援哪些 FIX 版本?
FIX 4.4 完全支援,是生產環境中最常見的版本。FIX 5.0 + FIXT 1.1 也完全支援,相對於 4.4 僅有 2% 的開銷。結構索引與版本無關 — 欄位掃描在所有 FIX 版本中工作方式相同。
NexusFIX 已準備好用於生產環境嗎?
NexusFIX 處於積極開發中,尚未部署在生產交易環境中。基準測試來自 CPU 綁定和快取預熱的受控環境。生產環境加固是獨立的工程工作。
NexusFIX 與 Fix8 相比如何?
Fix8(C++11)使用物件池和零拷貝技術。NexusFIX 的不同之處在於利用 C++23 標準函式庫功能(PMR、std::span、std::expected)而非自訂實現,並新增了 Fix8 所沒有的 SIMD 加速解析。