1 ポイント 投稿者 GN⁺ 2024-07-09 | 1件のコメント | WhatsAppで共有

C++低レイテンシアプリケーションのためのデザインパターン

  • 著者: Paul Bilokon, Burak Gunduz
  • 投稿日: 2023年9月8日
  • テーマ: 低レイテンシコードの最適化、特に高頻度取引(HFT)システムに重点

主な貢献

  • 低レイテンシプログラミングリポジトリの作成: 厳密な統計的ベンチマーキングを含む実用的なガイド
  • マーケットニュートラルな統計的裁定取引戦略の最適化: 速度と収益性で大幅な改善
  • DisruptorパターンのC++実装: 従来のキューイング手法より性能向上

評価指標

  • 速度
  • キャッシュ活用
  • 統計的有意性 など

主要技術

  • キャッシュウォーミング: キャッシュ初期化によるレイテンシ削減
  • Constexpr: コンパイル時の定数評価による性能向上

今後の方向性

  • リポジトリ拡張
  • 最適化された取引アルゴリズムのリアルタイム取引環境でのテスト
  • Disruptorパターンと取引アルゴリズムを統合した総合的なシステムベンチマーキング

対象読者

  • 学術界および産業界の実務者

GN⁺のまとめ

この論文は、低レイテンシアプリケーション、特に高頻度取引システムの性能を向上させるためのデザインパターンを扱っている。低レイテンシプログラミングリポジトリとDisruptorパターンの実装は、実務者にとって有用なガイドとなるだろう。キャッシュウォーミングやConstexprのような技術は、レイテンシ削減に大きく寄与する。この論文は、性能最適化に関心のある人々にとって非常に有益だろう。

1件のコメント

 
GN⁺ 2024-07-09
Hacker Newsの意見
  • テーマについての簡単な紹介

  • 学部生はすでに基本的な性能最適化の要素を理解している

    • 分岐予測、キャッシュコヒーレンシ、命令キャッシュなどの基本概念を学ぶ
  • 性能低下要因である false sharing に触れていないのは驚き

  • 最適化ヒント属性([[likely]], [[unlikely]])などに触れていないのも驚き

  • 高度な性能最適化要素は扱っていない

    • 特定の IO API、同期プリミティブ、IPC メカニズム、コンパイラ組み込み関数など
  • 低遅延プログラマに必要なのは、不要な割り当てやコピーなどに対する警戒心

    • ベンチマークを通じて性能低下要因を見つける習慣が必要
  • 低遅延サーバーを書くとき、ベクター IO 操作は小さなオブジェクトを連続バッファにコピーするより遅いことに気づいた

    • 無料のコピーなどないことを強調している
  • テスト結果は t 統計量と p 値を提供する

    • t 統計量は残差の単位根検定の結果を示す
    • p 値は検定の帰無仮説が真である確率を与える
  • この部分は LLM を使って書かれたように見える

  • 5年分の1日1回の終値を分析し、65マイクロ秒の遅延でスプレッドを計算する例は奇妙

    • 内部ループで統計を計算していない
    • 65マイクロ秒は内部ループとしては遅すぎる
    • 最適化手法を練習するための例に見える
  • C++ で書かれた株式取引所の実装を共有

    • LMAX disruptor パターンを使っている
    • Rust で書き直そうとしている
    • Rust のほうがメモリ管理と依存関係が楽
  • C++ のロギングライブラリを書いた

    • LMAX disruptor に似ている
    • HFT コミュニティで使われている
    • 性能低下なしに詳細なロギングを可能にする
    • 同僚が性能低下を懸念して重要な情報をログに残さない問題を解決する
  • コンパイル時ディスパッチの効率性は、関数呼び出しの決定がコンパイル段階で行われることによる

    • コンパイラが呼び出される関数を静的に決定できれば、呼び出し先関数のコードをその場でインライン展開できる
    • すべての関数呼び出しオーバーヘッドを取り除き、追加の最適化を可能にする
  • CppCon 2017 の発表資料を共有

    • 「マイクロ秒が永遠のように感じられるとき」というテーマ
    • プロの開発者なら資料全体を見るとよい
  • 高頻度取引が存在すべき理由があるのか疑問を呈している

    • ビットコインがエネルギーを浪費すると不満を言う一方で、高頻度取引は社会に純粋な負の影響を与える