Các mẫu thiết kế cho ứng dụng C++ độ trễ thấp
- Tác giả: Paul Bilokon, Burak Gunduz
- Ngày gửi: 8 tháng 9, 2023
- Chủ đề: Tối ưu mã độ trễ thấp, đặc biệt tập trung vào các hệ thống giao dịch tần suất cao (HFT)
Đóng góp chính
- Xây dựng kho mã lập trình độ trễ thấp: Hướng dẫn thực tiễn, bao gồm benchmark thống kê nghiêm ngặt
- Tối ưu chiến lược arbitrage thống kê trung lập thị trường: Cải thiện đáng kể về tốc độ và khả năng sinh lợi
- Triển khai mẫu Disruptor bằng C++: Hiệu năng tốt hơn các phương pháp xếp hàng truyền thống
Chỉ số đánh giá
- Tốc độ
- Mức độ tận dụng cache
- Ý nghĩa thống kê, v.v.
Công nghệ chính
- Làm nóng cache: Giảm độ trễ bằng cách khởi tạo cache trước
- Constexpr: Cải thiện hiệu năng thông qua đánh giá hằng số tại thời điểm biên dịch
Hướng đi tương lai
- Mở rộng kho mã
- Kiểm thử các thuật toán giao dịch đã tối ưu trong môi trường giao dịch thời gian thực
- Tích hợp mẫu Disruptor với các thuật toán giao dịch để benchmark toàn diện hệ thống
Độc giả mục tiêu
- Các nhà nghiên cứu học thuật và người làm thực tiễn trong ngành
Tóm tắt của GN⁺
Bài báo này đề cập đến các mẫu thiết kế nhằm cải thiện hiệu năng của các ứng dụng độ trễ thấp, đặc biệt là hệ thống giao dịch tần suất cao. Kho mã lập trình độ trễ thấp và việc triển khai mẫu Disruptor sẽ là hướng dẫn hữu ích cho người làm thực tiễn. Các kỹ thuật như làm nóng cache và Constexpr đóng góp lớn vào việc giảm độ trễ. Bài báo này sẽ rất hữu ích với những ai quan tâm đến tối ưu hiệu năng.
1 bình luận
Ý kiến trên Hacker News
Đây là phần giới thiệu ngắn gọn về chủ đề
Sinh viên đại học đã biết các yếu tố tối ưu hiệu năng cơ bản
Thật ngạc nhiên khi bài viết không đề cập đến false sharing, một nguyên nhân làm giảm hiệu năng
Cũng ngạc nhiên khi không đề cập đến các thuộc tính gợi ý tối ưu như
[[likely]],[[unlikely]]Không bàn đến các yếu tố tối ưu hiệu năng nâng cao
Điều mà lập trình viên low-latency cần là sự cảnh giác với các cấp phát, sao chép không cần thiết, v.v.
Khi viết máy chủ low-latency, có lúc nhận ra thao tác vector IO chậm hơn việc sao chép các đối tượng nhỏ vào một buffer liên tiếp
Kết quả kiểm thử cung cấp t-statistic và p-value
Đoạn này có vẻ như được viết bằng LLM
Ví dụ phân tích giá đóng cửa mỗi ngày một lần trong 5 năm và tính spread với độ trễ 65 micro giây là khá kỳ lạ
Chia sẻ một implementation sàn giao dịch chứng khoán viết bằng C++
Đã viết một thư viện logging C++
Hiệu quả của compile-time dispatch đến từ việc quyết định lời gọi hàm được thực hiện ở giai đoạn biên dịch
Chia sẻ tài liệu bài nói tại CppCon 2017
Đặt câu hỏi liệu có thực sự cần sự tồn tại của giao dịch tần suất cao hay không