Смешивать отладку и выпуск в MSVC? - PullRequest
0 голосов
/ 17 сентября 2011

У меня есть программа с довольно простой функцией загрузки, которая занимает около 30 секунд (3M треугольников, которые входят в стандартные контейнеры).Это прекрасно работает.

Остальное не всегда (оно не закончено), поэтому я много отлаживаю, я делаю много изменений и т. Д., Что означает перезапуск довольно часто.

Естьесть какая-нибудь секретная техника для компиляции загрузчика в релизе (что чрезвычайно ускоряет все) и оставление остального в качестве отладки?

ps.Я использую MSVC 2005

Ответы [ 2 ]

3 голосов
/ 17 сентября 2011

Сборки отладки на Visual C ++, как правило, очень медленные. Для этого есть несколько причин:

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

Я успешно отлаживал приложения, которые интенсивно используют память и STL, используя следующий метод:

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

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

Надеюсь, это поможет!

2 голосов
/ 17 сентября 2011

Смешивание сборок отладки и выпуска имеет тенденцию идти ужасно неправильно.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...