Debug и Release - это просто ярлыки для разных конфигураций решения. Вы можете добавить другие, если хотите. Если вы хотите, вы можете добавить больше конфигураций из диспетчера конфигурации -
http://msdn.microsoft.com/en-us/library/kwybya3w.aspx
Основные различия -
1.В dll отладки добавлено несколько дополнительных инструкций, позволяющих вам установить точку останова на каждой строке исходного кода в Visual Studio. Кроме того, код не будет оптимизирован, что позволит вам отлаживать код.
В версии выпуска эти дополнительные инструкции удалены.
2.PDB-файл создается только в режиме отладки, а не в режиме выпуска.
3.В режиме выпуска cpde оптимизируется оптимизатором, встроенным в JIT-компилятор. Это делает следующие оптимизации:
• Встраивание метода - вызов метода заменяется введением кода метода.
• Распределение регистров ЦП. Локальные переменные и аргументы методов могут храниться в регистре ЦП без повторного (или менее частого) сохранения в фрейме стека.
• Исключение проверки индекса массива - важная оптимизация при работе с массивами (все классы коллекций .NET используют массив внутри). Когда JIT-компилятор может проверить, что цикл никогда не индексирует массив вне границ, он устраняет проверку индекса.
• Loop unrolling - Short loops (up to 4) with small bodies are eliminated by repeating the code in the loop body.
• Dead code elimination - A statement like if (false) { /.../ } gets completely eliminated.
• Code hoisting- Code inside a loop that is not affected by the loop can be moved out of the loop.
• Common sub-expression elimination. x = y + 4; z = y + 4; becomes z = x