c++ - 编译器或链接器内联函数的差异?

标签 c++ compiler-construction linker inline

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

例如如果我在 .cpp 文件中拥有所有函数并依赖链接器进行内联,那么这种内联是否会比在头文件中定义一些函数以在编译器级别选择内联或没有任何链接和所有内联的统一构建效率低由编译器完成?

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

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

谢谢

最佳答案

一般规则是所有其他条件都相同,越接近执行(编译->链接->(可能是 JIT)->执行),优化完成的数据越多,优化器可以执行的优化就越好。因此,除非优化器是愚蠢的,否则当链接器完成内联时,您应该期望得到更好的结果 - 链接器将 know more about the invokation context并进行更好的优化。

关于c++ - 编译器或链接器内联函数的差异?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5948703/

相关文章:

c++ - 使用可变参数模板进行隐式转换

C++ 模板函数重载解析

c++ - 模板 lambda 与带有模板 operator() 的仿函数

c# - 用于在嵌套范围内查找的最佳数据结构

c - 如何让链接器报告它为给定函数链接到的位置

c++ - 在 C++ 文件 : Linking issues with Makefile 中使用 C extern 函数

c++ - 复制构造动态分配对象的问题

parsing - 编译器中的解析阶段与规则引擎有何不同?

生成轻量级可执行文件的 C 编译器

c++ - 链接器错误 : Multiple definition of a function