每次我读到 C++ 中的 inline
关键字时,都会有很长的解释说明编译器会进行“速度与代码量”分析,然后决定是否在每种特定情况下内联函数调用。
现在 Visual C++ 9 有一个 __forceinline
keyword这似乎使编译器内联对函数的调用,除非这种内联是绝对不可能的(就像调用是虚拟的)。
假设我在不了解其中内容的情况下浏览了一些项目,然后自己决定三分之一的函数足够小并且适合内联,并用 __forceinline
标记它们,编译器确实内联它们,现在可执行文件已经变大了一百倍。
这真的很重要吗?过度内联函数并使可执行文件大一百倍,我应该期待什么效果?
最佳答案
主要影响是缓存。内联违背了局部性原则; CPU 将不得不更频繁地从主存中获取指令。因此,旨在使代码更快的东西实际上可能会使它变慢。
关于c++ - 如果函数内联过于激进会怎样?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4989363/