调试构建中的内联函数(Visual C++2008)

Inline functions in debug build (Visual C++ 2008)

本文关键字:Visual C++2008 函数 构建 调试      更新时间:2023-10-16

我使用的游戏引擎在调试构建中速度太慢,无法调试游戏。我想让编译器内联小函数(尤其是在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