Режим продукта с DLL отладки

Я знаю, что библиотека классов, скомпилированная в режиме «Release», будет работать быстрее и эффективнее, чем библиотека, скомпилированная в режиме «Debug», но знает ли кто-нибудь, в какой степени?

РЕДАКТИРОВАТЬ: это для DLL .net.


person maxp    schedule 17.07.2009    source источник
comment
Это для собственной библиотеки DLL, скомпилированной для x86, или для сборки .net?   -  person Michael Donohue    schedule 17.07.2009


Ответы (2)


Это определенно зависит от типа кода. Если программа в основном представляет собой серию вызовов существующего кода (в среде CLR или где-либо еще), то ее оптимизация не окажет большого влияния. Но если он выполняет значительную обработку, например, перебирает данные для вычисления хэша, то это может быть намного быстрее, легко с множителем два, упомянутым kingchris.

Имейте в виду, что Debug / Release немного странен для .NET, поскольку это флаг, влияющий на JIT-компиляцию. Это означает, что код выпуска, выполняемый под отладчиком, по умолчанию обрабатывается как код отладки и поэтому не оптимизируется. Проверьте параметры отладчика, если это вас беспокоит.

person Steven Sudit    schedule 17.07.2009

Когда вы используете язык, который зависит / полагается на оптимизацию, например C ++ / CLI, разница может легко составить 10 раз. Это связано с тем, что сгенерированный IL уже будет медленнее, а запуск этого IL в отладчике накладывает штраф вдобавок к этому.

person MSalters    schedule 17.07.2009
comment
Вполне может быть, что это не накладные расходы отладчика, а та функция неоптимизации JIT, о которой я упоминал. - person Steven Sudit; 17.07.2009