Вступить в клуб →
средняявопросПроизводительность и низкие задержки

В профиле торгового движка лидируют атомарные инкременты shared_ptr

bool matches(std::shared_ptr<const Order> order, std::shared_ptr<const Rule> rule);

for (const auto& rule : rules)          // 2000 правил
    if (matches(order, rule)) ...        // на каждый ордер

perf показывает заметное время в lock xadd и lock xsub внутри matches, при нагрузке на 16 потоках картина хуже, чем на одном. Функция не сохраняет указатели. Что исправить?

  • Принимать const Order& и const Rule&
  • Заменить shared_ptr на weak_ptr в параметрах
  • Создавать указатели через make_shared
  • Передавать shared_ptr через std::move

🔒 Проверка ответа — для участников клуба

  • Проверка ответа
  • Подсказка, если застряли
  • Разбор с объяснением, почему так
  • Прогресс по всем задачам и виртуальные собеседования
Зарегистрироваться →

Регистрация занимает минуту

Другие задачи раздела