Подтвердить что ты не робот

Флажок "Оптимизировать код" в Visual Studio. Что именно он делает?

Вкладка "Сборка" свойств проекта в Visual Studio 2005/2008 содержит "Оптимизировать код".

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

  • Мой вопрос: почему я НЕ должен его использовать?
  • Почему он не включен по умолчанию?
  • Что это на самом деле?
4b9b3361

Ответ 1

  • Вы не хотите, чтобы это было сделано для отладки, поскольку это затрудняет работу с кодом, поскольку текущий исполняемый код может неправильно отражать написанное вами (поскольку некоторые строки будут оптимизированы)

  • Он по умолчанию не установлен для сборников DEBUG по вышеуказанной причине, он должен быть включен по умолчанию в версиях релизов

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

Ответ 2

В Википедии есть статья о оптимизация компилятора, которая охватывает многие из основных типов оптимизаций.

Вы не хотите создавать оптимизированные сборки отладки. Оптимизация влияет на debugability вашего кода - некоторые строки кода могут быть удалены, некоторые строки кода из разных частей функции или из разных функций могут быть объединены вместе, локальные переменные могут быть сложены вместе и так далее. Это означает, что при отладке вашей текущей строки может появиться случайное скачкообразное перемещение из-за реорганизации кода, а проверка локальных переменных может быть очень ошибочной - пространство для локального может быть повторно использовано, когда оно больше не понадобится и, похоже, дает результат смеха.