Флажок "Оптимизировать код" в Visual Studio. Что именно он делает?
Вкладка "Сборка" свойств проекта в Visual Studio 2005/2008 содержит "Оптимизировать код".
В документации указано, что "... включает или отключает оптимизацию, выполняемую компилятором, чтобы сделать ваш выходной файл меньше, быстрее и эффективнее".
- Мой вопрос: почему я НЕ должен его использовать?
- Почему он не включен по умолчанию?
- Что это на самом деле?
Ответы
Ответ 1
-
Вы не хотите, чтобы это было сделано для отладки, поскольку это затрудняет работу с кодом, поскольку текущий исполняемый код может неправильно отражать написанное вами (поскольку некоторые строки будут оптимизированы)
-
Он по умолчанию не установлен для сборников DEBUG по вышеуказанной причине, он должен быть включен по умолчанию в версиях релизов
-
Он выполняет такие оптимизации, как динамическая вставка и удаление ненужных локальных переменных. Любая оптимизация, которую можно решить во время компиляции.
Ответ 2
В Википедии есть статья о оптимизация компилятора, которая охватывает многие из основных типов оптимизаций.
Вы не хотите создавать оптимизированные сборки отладки. Оптимизация влияет на debugability вашего кода - некоторые строки кода могут быть удалены, некоторые строки кода из разных частей функции или из разных функций могут быть объединены вместе, локальные переменные могут быть сложены вместе и так далее. Это означает, что при отладке вашей текущей строки может появиться случайное скачкообразное перемещение из-за реорганизации кода, а проверка локальных переменных может быть очень ошибочной - пространство для локального может быть повторно использовано, когда оно больше не понадобится и, похоже, дает результат смеха.
Ответ 3
Посмотрите ответы на Что такое/оптимизируйте ключ компилятора С#, предназначенный для? Они отвечают на ваши вопросы (особенно ответ Noldorin).