0

我正在使用本机中的 STL,混合本机和托管 Visual C++。我有一个奇怪的问题。似乎当我在设置了所有优化的发布模式下编译我的软件时,我的软件运行速度始终比在调试模式下慢。这里有什么问题?

这些是我的调试命令行选项:

/Od /D "WIN32" /D "_D​​EBUG" /D "_UNICODE" /D "UNICODE" /FD /EHa /MDd /Fo"Debug\" /Fd"Debug\vc90.pdb" /W3 /nologo /c /子 /clr /TP /errorReport:prompt /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 "UNICODE" /FD /EHa /MD /Fo"Release\" /Fd"Release\vc90.pdb" /W3 /nologo /c /clr /TP /errorReport:prompt /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"

4

2 回答 2

1

从命令行开关中诊断是完全不可能的,您必须使用分析器。

然而,相关的一件事是您使用 /clr 选项。除非您在代码中明确使用 #pragma managed,否则所有内容都将被转换为 IL,甚至是 STL 模板代码。这意味着您的优化设置没有任何效果,因为它们仅适用于生成的机器代码。然后,您将受制于 JIT 编译器为优化所做的工作。例如,当您附加了调试器时,默认情况下它不会优化。

于 2010-09-15T16:44:00.213 回答
0

尝试分析发布版本,看看您是否注意到任何明显不正确的缓慢。如果需要,将其与调试版本的配置文件输出进行比较。

或者,如果调试版本主观上“足够快”,只需发布​​它(尽管可能存在逆向工程影响)。

于 2010-09-15T17:05:46.547 回答