gpt4 book ai didi

c++ - 如果函数内联过于激进会怎样?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:53:44 24 4
gpt4 key购买 nike

每次我读到 C++ 中的 inline 关键字时,都会有很长的解释说明编译器会进行“速度与代码量”分析,然后决定是否在每种特定情况下内联函数调用。

现在 Visual C++ 9 有一个 __forceinline keyword这似乎使编译器内联对函数的调用,除非这种内联是绝对不可能的(就像调用是虚拟的)。

假设我在不了解其中内容的情况下浏览了一些项目,然后自己决定三分之一的函数足够小并且适合内联,并用 __forceinline 标记它们,编译器确实内联它们,现在可执行文件已经变大了一百倍。

这真的很重要吗?过度内联函数并使可执行文件大一百倍,我应该期待什么效果?

最佳答案

主要影响是缓存。内联违背了局部性原则; CPU 将不得不更频繁地从主存中获取指令。因此,旨在使代码更快的东西实际上可能会使它变慢。

关于c++ - 如果函数内联过于激进会怎样?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4989363/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com