编译器或链接器的内联函数的区别?

Coo*_*kie 15 c++ compiler-construction linker inline

我想知道链接器级别或编译器级别的内联函数在执行速度方面是否有任何区别?

例如,如果我在.cpp文件中拥有所有函数并依赖链接器进行内联,那么这种内联可能效率低于在编译器级别上为选定内联定义某些函数或在没有任何链接的情况下统一构建的所有函数内联编译完成?

如果链接器同样有效,为什么还要在编译器级别上明确地内联函数呢?这只是为了方便,说只有一行构造函数,因此不能用.cpp文件打扰?

我想这可能取决于编译器,在这种情况下,我最感兴趣的是Visual C++(Windows)和gcc(Linux).

谢谢

sha*_*oth 3

一般规则是在其他条件相同的情况下,越接近执行(编译->链接->(可能是 JIT)->执行),优化器拥有的数据越多,可以执行的优化就越好。因此,除非优化器是愚蠢的,否则当链接器完成内联时,您应该期待更好的结果 - 链接器将更多地了解调用上下文并进行更好的优化。