Большая часть нашего кода выпуска C# создается с выключенной опцией 'Optimize code'. Я полагаю, что это должно позволить коду, созданному в режиме Release быть отлаженным более легко.
Учитывая, что мы создаем довольно простое программное обеспечение, установленное на компьютере, которое соединяется с веб-сервисами бэкенда, (т.е. не особенно интенсивное процессором приложение) затем что, если какой-либо вид хита производительности мог бы ожидаться?
И какая-либо конкретная платформа, вероятно, будет хуже затронутый? Например, многопроцессорная система / 64 бита.
Полная информация доступна по адресу http://blogs.msdn.com/jaybaz_ms/archive/2004/06/28/168314.aspx .
Вкратце ...
В управляемом коде JITter во время выполнения выполняет почти всю оптимизацию. Разница в сгенерированном IL из этого флага довольно мала.
Оптимизация, выполняемая компилятором, выполняется на довольно низком уровне и не должна влиять на работу пользователей.
Если вы хотите количественно оценить оптимизацию своего приложения, просто профилируйте неоптимизированную и оптимизированную сборку и сравните результаты.
На самом деле, разница есть, иногда весьма существенная. Что действительно может повлиять на производительность (поскольку это то, о чем JIT заботится не полностью):
Ненужные ветвления (также не очень хорошо обслуживаются JIT - в конце концов, у него не так много времени, чтобы сделать все умные оптимизации)
Так что, если вы делаете что-то числовое - включите оптимизацию. Иначе вы вообще не увидите никакой разницы.
Вы единственный человек, который может ответить на вопрос о производительности. Попробуйте оба способа, измерьте производительность и посмотрите, что получится. Удар мог быть огромным, а могло и вовсе отсутствовать; Никто, читающий это, не знает, означает ли «огромный» для вас одну микросекунду или двадцать минут.
Если вас интересует, какие оптимизации выполняет компилятор C #, а не джиттер, когда включен переключатель оптимизации, см .:
http://blogs.msdn.com/ericlippert/archive /2009/06/11/what-does-the-optimize-switch-do.aspx