VS2008 C ++ Режим выпуска медленнее, чем режим отладки - PullRequest
0 голосов
/ 15 сентября 2010

Я работаю со смешанным Native и Managed Visual C ++, используя STL в Native. У меня странная проблема. Кажется, что когда я компилирую свое программное обеспечение в режиме выпуска со всеми установленными оптимизациями, мое программное обеспечение последовательно работает медленнее, чем в режиме отладки. Что здесь может быть не так?

Это мои параметры командной строки Debug:

/ Od / D "WIN32" / D "_DEBUG" / D "_UNICODE" / D "UNICODE" / FD / EHa / MDd / Fo "Debug \" /Fd"Debug\vc90.pdb "/ W3 / nologo / c / Zi / clr / TP / errorReport: приглашение / FU "c: \ Windows \ Microsoft.NET \ Framework \ v2.0.50727 \ System.dll" / FU "c: \ Windows \ Microsoft.NET \ Framework \ v2. 0.50727 \ System.Data.dll "/ FU" c: \ Windows \ Microsoft.NET \ Framework \ v2.0.50727 \ System.Drawing.dll "/ FU" c: \ Windows \ Microsoft.NET \ Framework \ v2.0.50727 \ System.Windows.Forms.dll "/ FU" c: \ Windows \ Microsoft.NET \ Framework \ v2.0.50727 \ System.XML.dll "

Это мои параметры командной строки Release:

/ Oi / Ot / Oy / GT / GL / D "WIN32" / D "_SECURE_SCL = 0" / D "_HAS_ITERATOR_DEBUGGING = 0" / D "VC_EXTRALEAN" / D "_UNICODE" / D "Юникод" / FD / EHa / MD / Fo "Release \" /Fd"Release\vc90.pdb "/ W3 / nologo / c / clr / TP / errorReport: приглашение / FU" c: \ Windows \ Microsoft.NET \ Framework \ v2.0.50727 \ System.dll "/ FU" c: \ Windows \ Microsoft.NET \ Framework \ v2.0.50727 \ System.Data.dll "/ FU" c: \ Windows \ Microsoft.NET \ Framework \ v2.0.50727 \ System.Drawing. dll "/ FU" c: \ Windows \ Microsoft.NET \ Framework \ v2.0.50727 \ System.Windows.Forms.dll "/ FU" c: \ Windows \ Microsoft.NET \ Framework \ v2.0.50727 \ System.XML. длл "

Ответы [ 2 ]

1 голос
/ 15 сентября 2010

Совершенно невозможно диагностировать с помощью переключателей командной строки, вы должны использовать профилировщик.

Однако важно отметить, что вы используете параметр / clr. Если в вашем коде явно не используется управляемая #pragma, все будет переведено на IL, даже код шаблона STL. Это означает, что ваши настройки оптимизации не имеют никакого эффекта, поскольку они применяются только к сгенерированному машинному коду. Затем вы подчиняетесь тому, что JIT-компилятор делает для оптимизации. Он не будет оптимизирован по умолчанию, например, если у вас есть отладчик.

0 голосов
/ 15 сентября 2010

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

В качестве альтернативы, если отладочная версия субъективно «достаточно быстра», просто отпустите ее (хотя это может иметь последствия для обратной инженерии).

...