Мне нужно профилировать мой код C ++, и valgrind --tool=callgrind
это феноменальный инструмент для этого. Мне было интересно, однако, должен ли я профилировать свой код с -g -pg -O1
или же -g -pg -O3
(GCC 4.4.7)? Последнее дает более точное представление о производительности моей программы, но я беспокоюсь, что -O3
запутает профилировщик и запутает, какие функции источника являются фактическими узкими местами. Возможно, я просто напуган рассказами о старых женах, но решил, что должен попросить об этом, прежде чем проводить потенциально несколькочасовой тест.
Этот поток в другом стеке потока может очистить ваш разум: флаги оптимизации при профилировании
Проблема не в профилировании с оптимизацией, а в отладке с оптимизацией (-g -pg).
Как сказал Quantdev, вы должны «всегда использовать те же параметры, которые использовались для создания производственных двоичных файлов», и вы не собираетесь создавать производственный двоичный файл с отладочной информацией.
Если темы не достаточно, дайте нам знать.