Профилирование Debug-сборки
Разработчик профилировал Debug-сборку (-O0 -g), увидел, что 40% времени уходит в маленькую функцию-геттер внутри std::vector, вручную развернул её вызовы в горячем цикле и отчитался об оптимизации. На Release-сборке замер не изменился вовсе.
Что было сделано неверно?
- Ошибка в инструменте: `perf` не умеет корректно атрибутировать время внутри шаблонов стандартной библиотеки
- Замер нужно делать на Release с оптимизациями и отладочными символами: профиль `-O0` не отражает реальную картину
- Оптимизировать нужно было по счётчику вызовов, а не по доле времени: функция вызывается редко
- Ошибка в выборе объекта оптимизации: пока не изменена асимптотика горячего цикла, любые правки внутри его тела бессмысленны
