Замер производительности сделан на отладочной сборке
Сравнивали две реализации фильтра сигнала. Замер выполнен на сборке с флагами -O0 -g и включённым санитайзером адресов: реализация A оказалась быстрее B примерно втрое. Вывод занесли в отчёт и выбрали A.
В релизной сборке с оптимизацией картина обратная: B заметно быстрее A.
Как это объяснить?
- Санитайзер замедляет обе реализации одинаково, поэтому исходный вывод о преимуществе A остаётся корректным
- Обратная картина означает ошибку в реализации B, и искать её нужно именно в релизной сборке с оптимизацией
- Нужно просто увеличить число повторов замера: при достаточном количестве прогонов результаты сойдутся
- Замер без оптимизаций и под санитайзером не отражает релиз: инлайнинг и векторизация меняют соотношение
