Расчёт суммы корзины на каждый запрос копирует 50 тысяч заказов
double totalAmount(std::vector<Order> orders) {
double sum = 0;
for (const auto& o : orders) sum += o.amount;
return sum;
}
auto total = totalAmount(cache.orders()); // orders() возвращает const std::vector<Order>&
Профайлер показывает, что половина времени обработчика уходит на malloc и конструкторы копирования Order. Что исправить?
- Принимать const std::vector<Order>&
- Принимать std::vector<Order>&& orders
- Вызывать с std::move(cache.orders())
- Сделать функцию inline в заголовке
