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

Сортировка с компаратором через std::function вдвое медленнее

void sortTrades(std::vector<Trade>& v, std::function<bool(const Trade&, const Trade&)> less) {
    std::sort(v.begin(), v.end(), less);
}

sortTrades(trades, [](const Trade& a, const Trade& b) { return a.ts < b.ts; });

Та же сортировка с лямбдой, переданной прямо в std::sort, на 10 млн сделок работает примерно вдвое быстрее. Сборка -O2. Откуда разница?

  • std::function стирает тип и мешает встраиванию
  • std::function копирует элементы при сравнении
  • std::sort с std::function выбирает другой алгоритм
  • Лямбда в std::function вызывается через new

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

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

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

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