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

Треть времени обработчика сообщений уходит на malloc и free

void Processor::handleBatch(const std::vector<RawMsg>& batch) {
    for (const auto& raw : batch) {
        std::string text = decode(raw);          // новая строка ~2 КБ
        std::vector<std::string_view> fields;
        split(text, '|', fields);                // ~40 полей
        route(fields);
    }
}

Пачки по 10 тысяч сообщений. Профиль: 30% времени в malloc, free и memmove. Что изменить в первую очередь?

  • Вынести буферы из цикла и переиспользовать
  • Заменить string_view на std::string в fields
  • Вызывать shrink_to_fit у буферов в конце итерации
  • Обработать каждое сообщение в своём потоке

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

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

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

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