1 poin oleh GN⁺ 2024-07-09 | 1 komentar | Bagikan ke WhatsApp

Pola desain untuk aplikasi C++ berlatensi rendah

  • Penulis: Paul Bilokon, Burak Gunduz
  • Tanggal pengajuan: 8 September 2023
  • Topik: Optimasi kode berlatensi rendah, khususnya berfokus pada sistem perdagangan frekuensi tinggi (HFT)

Kontribusi utama

  • Pembuatan repositori pemrograman berlatensi rendah: Panduan praktis yang mencakup benchmarking statistik yang ketat
  • Optimasi strategi arbitrase statistik netral pasar: Peningkatan yang signifikan dalam kecepatan dan profitabilitas
  • Implementasi pola Disruptor dalam C++: Peningkatan performa dibandingkan metode antrean tradisional

Metrik evaluasi

  • Kecepatan
  • Pemanfaatan cache
  • Signifikansi statistik, dan lain-lain

Teknologi utama

  • Cache warming: Mengurangi latensi melalui inisialisasi cache
  • Constexpr: Meningkatkan performa melalui evaluasi konstanta pada waktu kompilasi

Arah ke depan

  • Perluasan repositori
  • Pengujian algoritme perdagangan yang telah dioptimalkan dalam lingkungan perdagangan waktu nyata
  • Mengintegrasikan pola Disruptor dan algoritme perdagangan untuk benchmarking sistem yang komprehensif

Pembaca sasaran

  • Praktisi di dunia akademik dan industri

Ringkasan GN⁺

Makalah ini membahas pola desain untuk meningkatkan performa aplikasi berlatensi rendah, khususnya sistem perdagangan frekuensi tinggi. Repositori pemrograman berlatensi rendah dan implementasi pola Disruptor akan menjadi panduan yang berguna bagi para praktisi. Teknik seperti cache warming dan Constexpr memberikan kontribusi besar dalam mengurangi latensi. Makalah ini akan sangat bermanfaat bagi mereka yang tertarik pada optimasi performa.

1 komentar

 
GN⁺ 2024-07-09
Komentar Hacker News
  • Ini adalah pengantar singkat tentang topik tersebut

  • Mahasiswa sarjana pada dasarnya sudah mengetahui elemen dasar optimisasi performa

    • Mempelajari konsep dasar seperti branch prediction, cache coherence, dan instruction cache
  • Mengejutkan karena tidak membahas false sharing, yang merupakan faktor penurunan performa

  • Juga mengejutkan karena tidak membahas atribut petunjuk optimisasi seperti [[likely]], [[unlikely]], dan sebagainya

  • Tidak membahas elemen optimisasi performa tingkat lanjut

    • Seperti API I/O tertentu, synchronization primitive, mekanisme IPC, compiler built-in function, dan sebagainya
  • Yang dibutuhkan programmer low-latency adalah kewaspadaan terhadap alokasi, penyalinan, dan hal-hal lain yang tidak perlu

    • Diperlukan kebiasaan mencari faktor penurunan performa melalui benchmark
  • Saat menulis server low-latency, saya menyadari bahwa operasi vector I/O lebih lambat daripada menyalin objek kecil ke buffer berurutan

    • Menekankan bahwa tidak ada penyalinan yang benar-benar gratis
  • Hasil pengujian memberikan t-statistic dan p-value

    • t-statistic menunjukkan hasil uji unit root pada residual
    • p-value memberikan probabilitas bahwa hipotesis nol dari pengujian itu benar
  • Bagian ini terasa seperti ditulis menggunakan LLM

  • Contoh yang menganalisis harga penutupan sekali sehari selama 5 tahun dan menghitung spread dengan latensi 65 mikrodetik terasa aneh

    • Tidak menghitung statistik di inner loop
    • 65 mikrodetik terlalu lambat untuk inner loop
    • Terlihat seperti contoh untuk melatih teknik optimisasi
  • Membagikan implementasi bursa saham yang ditulis dalam C++

    • Menggunakan pola LMAX disruptor
    • Ingin menulis ulangnya dalam Rust
    • Manajemen memori dan dependensi lebih mudah di Rust
  • Menulis library logging C++

    • Mirip dengan LMAX disruptor
    • Digunakan di komunitas HFT
    • Memungkinkan logging yang detail tanpa penurunan performa
    • Menyelesaikan masalah rekan kerja yang tidak mencatat informasi penting karena khawatir performa menurun
  • Efisiensi compile-time dispatch berasal dari keputusan pemanggilan fungsi yang dilakukan pada tahap kompilasi

    • Jika compiler dapat menentukan secara statis fungsi yang akan dipanggil, compiler bisa langsung melakukan inline pada kode fungsi tersebut
    • Menghilangkan seluruh overhead pemanggilan fungsi dan memungkinkan optimisasi tambahan
  • Membagikan materi presentasi CppCon 2017

    • Bertema ketika mikrodetik terasa seperti selamanya
    • Jika Anda seorang developer profesional, sebaiknya melihat seluruh materinya
  • Mempertanyakan apakah ada alasan mengapa high-frequency trading harus ada

    • Orang-orang mengeluh bahwa Bitcoin memboroskan energi, tetapi high-frequency trading memberi dampak negatif murni bagi masyarakat