Преимущества опции 'Optimize code' в сборке Visual Studio

Большая часть нашего кода выпуска C# создается с выключенной опцией 'Optimize code'. Я полагаю, что это должно позволить коду, созданному в режиме Release быть отлаженным более легко.

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

И какая-либо конкретная платформа, вероятно, будет хуже затронутый? Например, многопроцессорная система / 64 бита.

28
задан g t 15 March 2010 в 00:39
поделиться

4 ответа

Полная информация доступна по адресу http://blogs.msdn.com/jaybaz_ms/archive/2004/06/28/168314.aspx .

Вкратце ...

В управляемом коде JITter во время выполнения выполняет почти всю оптимизацию. Разница в сгенерированном IL из этого флага довольно мала.

14
ответ дан 28 November 2019 в 03:08
поделиться

Оптимизация, выполняемая компилятором, выполняется на довольно низком уровне и не должна влиять на работу пользователей.

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

2
ответ дан 28 November 2019 в 03:08
поделиться

На самом деле, разница есть, иногда весьма существенная. Что действительно может повлиять на производительность (поскольку это то, о чем JIT заботится не полностью):

  • Ненужные локальные переменные (т.е. большие стековые кадры для каждого вызова)
  • Слишком общие условные инструкции, JIT переводит их довольно простым способом.
  • Ненужные ветвления (также не очень хорошо обслуживаются JIT - в конце концов, у него не так много времени, чтобы сделать все умные оптимизации)

    Так что, если вы делаете что-то числовое - включите оптимизацию. Иначе вы вообще не увидите никакой разницы.

6
ответ дан 28 November 2019 в 03:08
поделиться

Вы единственный человек, который может ответить на вопрос о производительности. Попробуйте оба способа, измерьте производительность и посмотрите, что получится. Удар мог быть огромным, а могло и вовсе отсутствовать; Никто, читающий это, не знает, означает ли «огромный» для вас одну микросекунду или двадцать минут.

Если вас интересует, какие оптимизации выполняет компилятор C #, а не джиттер, когда включен переключатель оптимизации, см .:

http://blogs.msdn.com/ericlippert/archive /2009/06/11/what-does-the-optimize-switch-do.aspx

31
ответ дан 28 November 2019 в 03:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: