Почему я НЕ должен использовать ключ / optimize для компиляции моего кода на C #? - PullRequest
7 голосов
/ 23 января 2009

В Visual Studio 2008 есть опция «Оптимизировать код», которая, вероятно, соответствует опции / optimize. Он никогда не включается даже в режиме «Отпуск».

Почему я не хочу, чтобы эта опция всегда была включена?

Ответы [ 3 ]

9 голосов
/ 23 января 2009

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

7 голосов
/ 23 января 2009

Оптимизация кода стала достаточно хорошей в C # 3 - она ​​делает много хитрых настроек производительности, которые изменяют ваш код намного больше в IL, чем вы могли ожидать.

Некоторые инструменты запутывания (и некоторые другие инструменты IL, такие как ILMerge) могут иногда ломать сборку при включенной оптимизации. Чем больше инструментов IL вы используете, тем выше вероятность возникновения серьезных проблем с оптимизацией.

Также, как уже сказал @Brian Rasmussen (+1) - вы хотите отключить его для отладки, включить для релизов.

3 голосов
/ 23 января 2009

Чтобы прояснить это, оптимизация выполняет встроенные функции и устраняет некоторые переменные. При отладке оптимизированного кода в среде IDE вы не получите такой большой помощи, как обычно, поскольку некоторый код на самом деле больше не существует. Так что для отладки выключите если (по умолчанию).

В таких языках, как оптимизация C ++, иногда (часто) возникает критический побочный эффект, который необходимо учитывать. Насколько я знаю, это не так или почти не так для C #, поэтому с точки зрения правильности вашего кода, вероятно, не имеет значения, оптимизируете ли вы или нет.

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