NanoMatch
NanoMatch دفتر سفارشهای محدود و موتور تطبیق پُرکارایی با C++20 است. عملیات اصلی یک بازار مالی را شبیهسازی میکند و سفارشهای خرید و فروش را با اولویت قیمت و زمان، با میلیونها عملیات در ثانیه، تطبیق میدهد.
۰۱ / نمای کلی
- ۰۱C++20
- ۰۲CMake 3.20+
- ۰۳Google Test 1.17
- ۰۴GitHub Actions CI/CD
- ۰۵AddressSanitizer
- ۰۶UBSan
مسئله
بازارهای مالی به تطبیق سفارش با تأخیر بسیار کم نیاز دارند. درک این موتورها در سطح سامانه مستلزم ساخت نمونهای از صفر، با محدودیتهای واقعی کارایی است.
نمای کلی راهکار
- تطبیق با اولویت قیمت و زمان FIFO برای سفارشهای Limit، Market، IOC و FOK پیاده شد.
- لغو و تغییر سفارش با پیچیدگی O(1) و نمایهٔ جدول هش طراحی شد.
- تخصیصدهندهٔ حافظهٔ استخری، سربار heap را در مسیر پرتکرار حذف میکند.
- پشتیبانی چند ابزار مالی با دفتر سفارش مستقل برای هر نماد اضافه شد.
۰۲ / شواهد
شواهد و راستیآزمایی
- توان عملیاتی: 1M+ سفارش در ثانیه در بنچمارک مصنوعی تکریسمانی.
- مجموعهٔ جامع آزمون با بنچمارک تأخیر p50/p99.
- 60+ آزمون واحد در 18 مجموعه؛ همگی موفق.
- اجرای ASan، UBSan، cppcheck و clang-format در CI پس از هر ارسال کد.
۰۳ / روشها
پیادهسازی
پشته فناوری
- C++20
- CMake 3.20+
- Google Test 1.17
- GitHub Actions CI/CD
- AddressSanitizer
- UBSan
- الگوریتم تطبیق با اولویت قیمت و زمان FIFO.
- 4 نوع سفارش: Limit، Market، IOC و Fill-or-Kill.
- لغو و تغییر سفارش O(1) از طریق جدول هش.
- تخصیصدهندهٔ استخری سفارشی برای حذف سربار تخصیص heap.
امنیت
- AddressSanitizer و UndefinedBehaviorSanitizer در CI.
- 60+ آزمون واحد در 18 مجموعهٔ آزمون.
- تحلیل ایستای cppcheck پس از هر ارسال کد.
- بدون وابستگی بیرونی هنگام اجرا.