Что побудило вас создать NexusFIX? Почему бы просто не использовать QuickFIX?
QuickFIX был разработан в начале 2000-х годов на основе идиом C++98/03: виртуальная диспетчеризация, выделение кучи для каждого сообщения, хранение полей на основе строк. Эти шаблоны принципиально несовместимы с требованиями к задержке менее микросекунды. Мы начали с первых принципов, используя возможности C++23, которые не 't exist when QuickFIX was designed.
Кто является целевой аудиторией NexusFIX?
Количественные торговые фирмы и инфраструктурные команды, которым требуется детерминированная обработка сообщений FIX за доли микросекунды. В частности: фирмы, реализующие совмещенные стратегии, команды, создающие индивидуальные торговые шлюзы, и инженеры C++, изучающие современные методы повышения производительности.
Как NexusFIX достигает нулевого выделения кучи? Представления
std::span<const char> в исходном буфере заменяют копии std::string. Предварительно индексированные массивы заменяют std::map. std::pmr::monotonic_buffer_resource обеспечивает распределение арены. Результат: нулевые вызовы malloc на горячем пути, проверенные с помощью специального инструментария распределителя.
Какие функции C++23 использует NexusFIX?
std::expected для обработки ошибок (нет исключений на горячем пути), std::span для представлений данных с нулевым копированием, концепции проверки интерфейса во время компиляции, consteval для вычислений во время компиляции и подсказки ветвей [[вероятных]]/[[маловероятных]].
Как это работает? Работа синтаксического анализа SIMD?
Инструкции AVX2 загружают по 32 байта за раз и используют векторизованное сравнение для параллельного поиска разделителей SOH (\x01). Это примерно в 13 раз быстрее, чем побайтовое сканирование. Этот метод основан на simdjson, но адаптирован для семантики протокола FIX.
Какие версии FIX поддерживаются?
FIX 4.4 имеет полную поддержку и является наиболее распространенным в рабочей среде. FIX 5.0 + FIXT 1.1 также имеет полную поддержку с накладными расходами всего 2% по сравнению с версией 4.4. Структурный индекс не зависит от версии — сканирование полей работает одинаково во всех версиях FIX.
Готов ли NexusFIX к производственной работе?
NexusFIX находится в активной разработке и еще не был развернут в производственных торговых средах. Тесты взяты из контролируемых сред с закреплением ЦП и подогревом кэша. Усиление безопасности производства — это отдельная инженерная работа.
Чем NexusFIX отличается от Fix8?
Fix8 (C++11) использует пулы объектов и методы нулевого копирования. NexusFIX отличается тем, что использует функции стандартной библиотеки C++23 (PMR, std::span, std::expected) вместо пользовательских реализаций и добавляет синтаксический анализ с ускорением SIMD, которого нет в Fix8.'t have.