调试构建中的内联函数(Visual C++2008)
Inline functions in debug build (Visual C++ 2008)
我使用的游戏引擎在调试构建中速度太慢,无法调试游戏。我想让编译器内联小函数(尤其是在Vector/Matrix和容器类中(。这可能会也可能不会加快调试构建中的游戏速度。在大量分析并试图找出瓶颈之前,我想我会先尝试一下,因为我必须做最少的工作,结果可能很有希望。
那么,有没有一种方法可以让Visual C++编译器在调试构建中内联函数呢?
项目选项->C/C++->优化->内联函数扩展。将其转到/Ob2
。还要确保调试信息格式(在C/C++->常规下(没有设置为/ZI
(如果是,则改为/Zi
(。在调试配置中执行此操作。
在Release中,内联函数扩展是由其他优化设置暗示的,因此即使默认情况下所有配置都说";默认";对于场景而言,行为确实有所不同。
http://msdn.microsoft.com/en-us/library/47238hez.aspx
(海报原件(我认为调试构建应该具有与发布相同的内联扩展行为;真的没有理由不这么做。
(编辑(不这样做的主要原因是,当在调试器中逐步执行代码时,内联的函数根本不会出现,导致"内联";不可见的";密码
您混淆了两个编译器选项。/O
影响优化,包括内联。/ZI
创建用于调试的PDB文件。它们可以独立设置。
不过,克隆"调试"配置并使用/O1
和/ZI
创建"调试优化"配置可能会很有用。
您可以尝试__forceinline
。请务必阅读该页面上的调试构建(关闭/Ob0
选项(。
我怀疑这不会对表演有太大的改变。如果你还没有尝试的话,另一件事就是在发布版本中添加符号。它可以很好地调试很多问题。
DEBUG
由Visual Studio在调试模式下编译项目时定义,因此:
#ifdef DEBUG
inline void fn() {
#else
void fn() {
#endif
- 如何使用Visual Studio 2008将字符串映射到函数?
- Visual Studio 2008 WriteFile
- Microsoft Visual Studio 2008,版本9.0.30739.1 SP,DLL构建错误
- 如何防止Visual Studio 2008 C编译器在发生某些错误时停止?
- upper_bound带有binary_function Visual Studio 2008错误
- 找不到 Visual Studio 2008 的生成工具(平台工具集 = 'v90')
- 如何自动增加Visual C 2008中的构建数量
- stdlib.h's random() on MS Visual Studio 2008
- 为什么Visual C++ 2008在我(不小心)使用布尔类型时没有抱怨
- Visual Studio 2008版本内部版本未装饰DLL导出
- Xerces Link error with Visual Studio 2008
- 如何将字符串值从C++返回到javascript(windows/Visual studio 2008)
- 默认参数值错误 [Visual C++ 2008 中的错误?
- 如何在 Visual C++ 2008 中使用组件对象模型
- Visual Studio 2008 64 位部署项目不会按预期部署 64 位 VC90 合并模块
- 如何将MFC应用程序项目添加到Visual C 2008中的Win32应用程序项目
- 这是Visual C++ 2008的编译器错误吗
- Visual Studio 2008 C++ 不会编译标头类中的更改
- std::find on std::vector< std::string > 在 Visual C++ 2008 中无法编译?
- 在Visual Studio 2008中使用WinCE7平台构建器为WinCE7创建Visual C++中的Winfor