3

У меня есть операция в моем проекте, который занимает около 2 минут в режиме отладки и меньше, чем второй в режиме выпуска. (Если это имеет значение, это функция, которая много пишет для вектора).Визуальная отладка Studio C++ Отключить в определенных частях кода

Очевидно, что практически невозможно использовать мое приложение в режиме отладки из-за ужасной производительности, вызываемой частью кода.

Итак, мой вопрос: возможно ли включить оптимизацию производительности и отключить отладку для определенного файла или класса? Если нет, другие способы решения этой проблемы?

+1

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

+0

Вы также можете подумать о макетном объекте (#ifdef DEBUG_). – Vertexwahn

+0

См. Http://stackoverflow.com/questions/12631609/why-is-this-code-100-times-slower-in-debug –

ответ

3

Есть несколько аспектов, которые влияют на производительность:

оптимизации (как Вы отметили). Вы можете указать оптимизацию на уровне файла с помощью свойств -> C/C++ -> Оптимизация. Вы можете также использовать #pragma optimize, как описано здесь: https://msdn.microsoft.com/en-us/library/chh3fb0k.aspx

Дополнительный код, который выполняется только в конфигурации DEBUG, как Checked итераторы; Вы можете управлять ими с помощью _SECURE_SCL или _ITERATOR_DEBUG_LEVEL, как описано здесь: https://msdn.microsoft.com/en-us/library/aa985965.aspx

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