NexusFIX のアーキテクチャ、メッセージ辞書、会場プロファイル、ベンチマークスイートへの会話型インターフェース。 182 個の専門家回答済みの質問 がインデックス化され、ライブコードベースを基にしています。定型回答で足りない時はライブスレッドへ。
こんにちは、NexusFIX エキスパートです。公開ソース、ベンチマーク CSV、本ページにインデックス化された 182 個の厳選回答に基づいています。
右からスレッドを選ぶか、下で何でも質問してください。ソースに答えがなければ、そう言います。
NexusFIX はどうやってゼロヒープ割り当てを実現していますか?
ホットパス上で 3 つの置き換えを行います:
1. std::span<const char> ビューが元のバッファを直接参照し、std::string コピーを置き換えます。span はスタック上で 16 バイト。ヒープなし、コピーなし、デストラクタなし。
2. 事前インデックス配列が std::map をフィールド検索で置き換えます。フィールドアクセスは FIX タグ番号でインデックスされた単一の mov 命令になります。
3. std::pmr::monotonic_buffer_resource が実際にスロットが必要なものにアリーナ割り当てを提供します。アリーナは事前にサイズ確保され、セッションごとに再利用されます。
結果はホットパス上で 0 回の malloc 呼び出し。すべての alloc/free を計装し、いずれかが発生したらテストを失敗させるカスタムアロケータで検証されています。
ほぼ毎回の会話で出てくる 8 つの質問。展開するにはクリック、または上のライブスレッドへ戻してください。
QuickFIX は 2000 年代初頭、C++98/03 のイディオムを中心に設計されました:仮想ディスパッチ、メッセージごとのヒープ割り当て、文字列ベースのフィールド格納。これらのパターンはサブマイクロ秒のレイテンシと根本的に互換性がありません。
私たちは QuickFIX 設計時に存在しなかった C++23 の機能を使い、第一原理から始めました。std::span、std::expected、std::pmr、コンセプト、consteval。そして問いました:20 年分のアロケータ決定を引きずらずに FIX エンジンを作ったらどうなるか?
決定論的でサブマイクロ秒の FIX メッセージ処理を必要とする量的トレーディング企業とインフラチームです。
具体的には:コロケーション戦略を運用する企業、カスタム取引ゲートウェイを構築するチーム、そして実際の公開コードベースでモダンなパフォーマンス技術を学ぶ C++ エンジニアです。
std::span
結果:ホットパス上でゼロ malloc 呼び出し。CI ビルドごとに実行されるカスタムアロケータ計装ハーネスで検証されています。
エラー処理用の std::expected(ホットパスに例外なし)、ゼロコピーデータビュー用の std::span、コンパイル時インターフェイス検証用のコンセプト、コンパイル時計算用の consteval、そして [[likely]]/[[unlikely]] 分岐ヒント。
QuickFIX の時代には、これらのそれぞれにカスタム実装が必要でした。
AVX2 命令が 32 バイトを一度にロードし、ベクトル化比較で SOH (\x01) 区切りを並列に見つけます。これはバイト単位スキャンより約 13 倍高速です。
この技術は simdjson にインスパイアされていますが、FIX プロトコルのセマンティクス用に調整されています。つまり tag=value=SOH 構造により、1 回のベクトル化パスですべてのフィールド境界を特定し、オフセットテーブルを構築できます。
FIX 4.4 は完全サポートで、本番環境で最も一般的なバージョンです。FIX 5.0 + FIXT 1.1 も完全サポートで、4.4 に対してオーバーヘッドはわずか 2% です。
構造インデックスはバージョン非依存です。フィールドスキャンはすべての FIX バージョンで同様に動作します。カスタム方言オーバーレイがセッションバインド時に会場固有のタグを処理します。
NexusFIX は活発に開発中で、まだ本番取引環境にはデプロイされていません。ベンチマークは CPU ピン留めとキャッシュウォーミングを行った制御された環境からのものです。
本番強化。ソークテスト、障害モードカバレッジ、特定の会場ゲートウェイへの認証。は別のエンジニアリング作業です。本番で検討している場合は、まず私たちと相談してください。
Fix8(C++11)はオブジェクトプールとゼロコピー技術を使用しており、より成熟したオープン FIX エンジンの 1 つです。
NexusFIX はカスタム実装の代わりに C++23 標準ライブラリ機能(PMR、std::span、std::expected)を活用する点が異なります。監査すべき可動部品が少なくなります。さらに Fix8 にはない SIMD 加速解析を追加しています。