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

Преимущества опции "Оптимизировать код" в сборке Visual Studio

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

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

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

4b9b3361

Ответ 1

Полную информацию можно найти на http://blogs.msdn.com/jaybaz_ms/archive/2004/06/28/168314.aspx.

Вкратце...

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

Ответ 2

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

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

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

Ответ 3

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

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

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

Ответ 4

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

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