Я цитирую
"Самое большое различие между ними заключается в том, что: в сборке отладки выдается полная символьная отладочная информация, помогающая при отладке приложений, а также оптимизация кода не учитывается. При выпускесборка символьная информация отладки не генерируется, а выполнение кода оптимизируется. Кроме того, поскольку символическая информация не генерируется в сборке выпуска, размер конечного исполняемого файла меньше размера исполняемого файла отладки.
Можноожидайте увидеть забавные ошибки в сборках релиза из-за оптимизаций компилятора или различий в разметке памяти или инициализации. Они обычно упоминаются как ошибки Release-Only:)
С точки зрения скорости исполнения исполняемый файл релиза будет выполняться быстрееконечно, но не всегда это будет существенно. "
Предоставлено Google и пользователем mcdeeiis http://haacked.com/archive/2004/02/14/difference-between-debug-vs-release-build.aspx
Это довольно убедительное объяснение для всех языков программирования