Вопрос оптимизации C ++ - PullRequest
3 голосов
/ 14 июля 2010

У меня есть какой-то средний проект, который активно использует boost библиотеки и, следовательно, страдает с точки зрения производительности приложения отладки (Visual Studio 2008).

Решение, которое яиспользование прямо сейчас означает включение функции вставки даже в режиме отладки, что обеспечивает достаточную производительность, но, безусловно, имеет некоторые недостатки.

Кто-нибудь знает, что я потеряю с точки зрения возможностей отладки, если принудительно включить функцию (/Ob2) переключатель?

Может быть, у кого-то есть другие идеи по ускорению ускорения / других библиотек шаблонов. Отладочная производительность?

Ответы [ 4 ]

8 голосов
/ 14 июля 2010

По моему мнению, вам, вероятно, , а не , следует проводить тестирование производительности вашего отладочного выпуска.

Сохраните отладочный выпуск для модульного тестирования, чтобы вы могли легко находить проблемы, кроме реального тестирования (функциональность и производительность), вероятно, должны быть в выпускной версии.

Это то, что ваши клиенты будут работать в конце концов, верно?

3 голосов
/ 14 июля 2010

Я согласен с предыдущими ответами о том, что вам вообще не нужно заботиться о производительности вашей отладочной сборки в целом. Тесты есть, потому что они нам нужны ...

Тем не менее, я прагматичный программист, и есть причина, по которой я не использую приложение valgrinded для выполнения своих тестов: я не хочу, чтобы они также были слишком медленными, потому что система в этот момент становится совершенно непрактичной.

Я не вижу ничего плохого в том, чтобы включить встраивание, уверен, что у отладчика могут быть некоторые проблемы с выбором места в коде, создавшем код, но он не изменяет сам код.

Я также видел частичные отладочные сборки. Идея состоит в том, чтобы отключить те функции отладки, которые действительно наносят вред программе (например, проверка итераторов), чтобы производительность оставалась приемлемой для поставленной задачи. Это может помочь вам, если вы решите, какие функции отладки замедляют работу. При этом у меня никогда не возникало проблем с производительностью при надстройке, но затем я компилирую его с помощью gcc, и я не знаю, сохраняется ли встраивание или нет при отладке.

1 голос
/ 14 июля 2010

Используйте /Ob2 в обеих конфигурациях Debug и Release. Поэтому, когда вы отлаживаете его, он будет вести себя так же, как в режиме релиза.

1 голос
/ 14 июля 2010

Я бы предложил отладить приложение, построенное в режиме отладки, и использовать его, когда оно встроено в режим выпуска (для тестов производительности, общего использования и т. Д.). Таким образом, вам не нужно беспокоиться о потере чего-либо во время отладки.

В любом случае, включение встраивания функций в Debug может сбить с толку отладчик, когда вы пересекаете код и сталкиваетесь с вызовом функции для встроенной функции. Но я никогда не проверял это, поэтому я не уверен.

...