【问题标题】:Can #undef reduce compiling time?#undef 可以减少编译时间吗?
【发布时间】:2013-05-26 07:56:21
【问题描述】:

#undef 可以减少编译时间吗?我有数千个宏和一个 250k 的函数,但它们最多需要 15 秒才能完全解析和编译。我应该这样写代码吗:

#define f_WM_SETFOCUS 0xF59EE0A2     
#define f_WM_KILLFOCUS 0xA4671283
#define f_WM_ENABLE 0x25A5D864

AddMacro('W', 'S',  f_WM_SETFOCUS, WM_SETFOCUS, ___INT);
AddMacro('W', 'S',  f_WM_KILLFOCUS, WM_KILLFOCUS, ___INT);
AddMacro('W', 'E',  f_WM_ENABLE, WM_ENABLE, ___INT);

#undef f_WM_SETFOCUS
#undef f_WM_KILLFOCUS
#undef f_WM_ENABLE

#define ...

【问题讨论】:

  • 当然很容易尝试一下,看看有什么不同。
  • 谢谢。我现在就试试。但是还有其他可以加快我的编译器的解决方案吗? IMO 这个过程并不容易......
  • 15 秒编译时间?!我希望我有你的问题
  • 使用预编译头文件可以增加编译时间,这在 Visual Studio 项目中很正常。
  • 通过使用专用的构建机器和多线程编译,我们将构建时间缩短到不到 32 分钟 ;-)

标签: c++ performance visual-c++ coding-style compilation


【解决方案1】:

我想它没有理由减少编译时间。 由于这些宏一旦被读取,它们可能会一直保存在内存中(我的意思是编译)——但这完全取决于编译器,所以你可能只是给它一个机会看看会发生什么。

为了避免一直读取这些宏,您可以做的就是只将带有这些宏的文件包含到实现文件中,而不是任何头文件中(这可能是可能的)。 这样,只有在实际使用这些宏时才会读取该文件(这意味着仅在使用它的编译单元中)。

HTH。

附言。无论如何,15 秒的编译时间并没有那么长;)

【讨论】:

  • 感谢您的回答。你是对的,确实#undef 并不能帮助我减少编译时间......
猜你喜欢
  • 1970-01-01
  • 2023-04-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-07
  • 2014-07-02
相关资源
最近更新 更多