Вступить в клуб →
средняявопросСборка, отладка и профилирование

Ускорили функцию в десять раз, а сервис быстрее не стал

Профилирование обработки потока кадров дало такую картину распределения времени:

wait_for_io    78%
parse_frame     4%
crc_check       3%
прочее         15%

Разработчик переписал crc_check на табличный алгоритм и ускорил саму функцию примерно в 10 раз. Общее время обработки почти не изменилось.

Как правильно объяснить результат?

  • Общее время должно было упасть примерно в 10 раз, раз функция ускорена в 10 раз, — значит замер выполнен неверно
  • Доля crc_check была 3%, поэтому даже полное её устранение дало бы не больше 3% выигрыша — результат ожидаем
  • Табличный CRC сам по себе медленнее из-за промахов кеша при обращении к таблице, поэтому выигрыш съеден
  • Профилировщик не учитывает время, проведённое в пользовательском коде, поэтому его показаниям нельзя доверять

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

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

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

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