1 पॉइंट द्वारा GN⁺ 2024-07-09 | 1 टिप्पणियां | WhatsApp पर शेयर करें

C++ low-latency applications के लिए design patterns

  • लेखक: Paul Bilokon, Burak Gunduz
  • प्रस्तुत तिथि: 8 सितंबर 2023
  • विषय: low-latency code optimization, खासकर High-Frequency Trading (HFT) systems पर फोकस

प्रमुख योगदान

  • low-latency programming repository का निर्माण: एक practical guide, जिसमें सख्त statistical benchmarking शामिल है
  • market-neutral statistical arbitrage strategy का optimization: speed और profitability में उल्लेखनीय सुधार
  • Disruptor pattern का C++ implementation: पारंपरिक queuing methods की तुलना में बेहतर performance

मूल्यांकन मेट्रिक्स

  • speed
  • cache utilization
  • statistical significance आदि

प्रमुख तकनीकें

  • cache warming: cache initialization के जरिए latency कम करना
  • Constexpr: compile-time constant evaluation के जरिए performance बढ़ाना

भविष्य की दिशा

  • repository का विस्तार
  • optimized trading algorithms को real-time trading environment में test करना
  • Disruptor pattern और trading algorithms को integrate करके comprehensive system benchmarking

लक्षित पाठक

  • academia और industry के practitioners

GN⁺ का सार

यह पेपर low-latency applications, खासकर High-Frequency Trading systems, की performance बेहतर करने के लिए design patterns पर चर्चा करता है। low-latency programming repository और Disruptor pattern का implementation practitioners के लिए उपयोगी guide बन सकता है। cache warming और Constexpr जैसी तकनीकें latency कम करने में बड़ा योगदान देती हैं। performance optimization में रुचि रखने वालों के लिए यह पेपर काफी उपयोगी होगा।

1 टिप्पणियां

 
GN⁺ 2024-07-09
Hacker News राय
  • यह विषय का एक संक्षिप्त परिचय है

  • स्नातक छात्र पहले से ही बुनियादी performance optimization तत्व जानते हैं

    • branch prediction, cache coherence, instruction cache जैसी बुनियादी अवधारणाएँ सीखते हैं
  • यह हैरानी की बात है कि performance degradation के कारण false sharing पर चर्चा नहीं की गई

  • यह भी हैरानी की बात है कि optimization hint attributes ([[likely]], [[unlikely]]) पर चर्चा नहीं की गई

  • उन्नत performance optimization तत्वों को शामिल नहीं किया गया

    • जैसे specific IO API, synchronization primitives, IPC mechanisms, compiler built-ins आदि
  • low-latency programmer के लिए जरूरी चीज़ अनावश्यक allocation, copy आदि के प्रति सतर्कता है

    • benchmark के ज़रिए performance degradation के कारणों को खोजने की आदत होनी चाहिए
  • low-latency server लिखते समय पता चला कि vector IO operations, छोटे objects को contiguous buffer में copy करने से धीमे थे

    • इस बात पर ज़ोर दिया गया कि free copy जैसी कोई चीज़ नहीं होती
  • test results t-statistic और p-value प्रदान करते हैं

    • t-statistic residuals के unit root test का परिणाम दिखाता है
    • p-value यह बताता है कि test की null hypothesis सही होने की कितनी संभावना है
  • यह हिस्सा ऐसा लगता है मानो LLM का उपयोग करके लिखा गया हो

  • 5 साल तक दिन में एक बार के closing price का analysis करके 65 microsecond latency में spread calculate करने वाला उदाहरण अजीब है

    • inner loop में statistics calculate नहीं की जाती
    • 65 microsecond inner loop के लिए बहुत धीमा है
    • यह optimization techniques का अभ्यास करने के लिए दिया गया उदाहरण लगता है
  • C++ में लिखी गई stock exchange implementation साझा की गई

    • इसमें LMAX disruptor pattern का उपयोग किया गया
    • इसे Rust में फिर से लिखने की योजना है
    • Rust में memory management और dependencies आसान हैं
  • C++ logging library लिखी गई

    • यह LMAX disruptor के समान है
    • HFT community में उपयोग होती है
    • performance degradation के बिना detailed logging संभव बनाती है
    • इससे वह समस्या हल हुई जिसमें सहकर्मी performance hit की चिंता से महत्वपूर्ण जानकारी log नहीं करते थे
  • compile-time dispatch की efficiency इसलिए है क्योंकि function call का निर्णय compile phase में हो जाता है

    • अगर compiler statically तय कर सके कि कौन-सा function call होगा, तो वह called function के code को सीधे inline कर सकता है
    • इससे function call overhead पूरी तरह हट जाता है और अतिरिक्त optimization संभव होते हैं
  • CppCon 2017 की presentation सामग्री साझा की गई

    • इसका विषय है: जब microseconds हमेशा जैसे लगें
    • यदि आप professional developer हैं, तो पूरी सामग्री देखना अच्छा रहेगा
  • high-frequency trading के अस्तित्व की आवश्यकता पर सवाल उठाया गया

    • लोग Bitcoin के energy waste पर शिकायत करते हैं, लेकिन high-frequency trading समाज पर शुद्ध नकारात्मक प्रभाव डालती है