Я пытаюсь выяснить, на что моя программа на C ++ тратит свое время, используя gprof. Вот моя дилемма: если я компилирую с теми же настройками оптимизации, которые использую для моей сборки релиза, почти все будет встроено, а gprof бесполезно сообщает мне, что 90% моего времени тратится на базовую процедуру, где все было встроено. С другой стороны, если я компилирую с отключенным встраиванием, программа будет работать на порядок медленнее.
Я хочу узнать, сколько времени занимают процедуры, вызываемые из моей основной процедуры, когда моя программа скомпилирована с включенным встраиванием.
Я использую 64-разрядную версию Ubuntu 9.04 на четырехъядерном компьютере Intel. Я заглянул в google-perftools, но, похоже, это не работает на x86_64. Запуск на 32-битной машине не вариант.
Есть ли у кого-нибудь предложения относительно того, как я могу более эффективно профилировать свое приложение, когда встраивание включено?
Изменить: Вот некоторые пояснения моей проблемы. Прошу прощения, если изначально было непонятно.
Я хочу узнать, где проводилось время в моем приложении. Профилирование моей оптимизированной сборки привело к тому, что gprof сказал мне, что ~ 90% времени тратится на main, где все было встроено. Я уже знал это до профилирования!
Я хочу узнать, сколько времени занимают встроенные функции, желательно без отключения оптимизации или встраивания в мои параметры сборки. Приложение работает примерно на порядок медленнее при профилировании с отключенным встраиванием. Эта разница во времени выполнения является проблемой удобства, но также я не уверен, что профиль производительности программы, созданной с отключенным встраиванием, будет строго соответствовать профилю производительности программы, созданной с включенным встраиванием.
Вкратце: есть ли способ получить полезную информацию о профилировании программы на C ++ без отключения оптимизации или встраивания?