StratCraft

インタラクティブ Q&A

アーキテクチャ、パフォーマンス、C++23 テクニック、プロジェクトロードマップを網羅した 182 の専門家回答。

よくある質問

NexusFIX を構築した動機は何ですか?なぜ QuickFIX を使わないのですか?
QuickFIX は C++98/03 のイディオムで設計されました:仮想ディスパッチ、メッセージ毎のヒープアロケーション、文字列ベースのフィールド格納。これらのパターンはサブマイクロ秒レイテンシー要件と根本的に相容れません。私たちは QuickFIX が設計された当時には存在しなかった C++23 機能を使い、ゼロベースから設計しました。
NexusFIX のターゲットユーザーは誰ですか?
決定論的なサブマイクロ秒 FIX メッセージ処理を必要とする量的取引会社とインフラチーム。具体的には:コロケーション戦略を運用する会社、カスタム取引ゲートウェイを構築するチーム、モダンパフォーマンステクニックを研究する C++ エンジニア。
NexusFIX はどのようにヒープアロケーションゼロを達成しますか?
std::string のコピーを元バッファへの std::span<const char> ビューで置き換え。std::map を事前インデックス配列で置き換え。std::pmr::monotonic_buffer_resource でアリーナアロケーションを提供。結果:カスタムアロケータ計測で確認されたホットパスでの malloc 呼び出しゼロ。
NexusFIX が使用する C++23 機能は何ですか?
エラー処理に std::expected(ホットパスで例外なし)、ゼロコピーデータビューに std::span、コンパイル時インターフェース検証にコンセプト、コンパイル時演算に 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 アクセラレーション解析を追加した点です。