inline 关键字会影响链接时间优化吗? [复制]

Posted

技术标签:

【中文标题】inline 关键字会影响链接时间优化吗? [复制]【英文标题】:Does the inline keyword affect link time optimization? [duplicate] 【发布时间】:2015-08-15 10:00:54 【问题描述】:

如果在启用链接时间优化 (-flto) 的情况下调用 gcc 并且我正在使用以下关键字/属性之一:

__attribute__((always_inline)) void foo(int i);
inline void bar(int i);

此关键字/属性是否影响链接时优化的行为(如果编译器无法执行inlineing)?

链接时优化是否更喜欢inlineing 这些函数而不是没有此关键字/属性的函数。

问题是它是否对链接器-阶段处理而不是编译器产生影响。

【问题讨论】:

我不认为 LTO 对这种情况的影响与属性文档中已经解释的有很大不同。 【参考方案1】:

根据之前在此处找到的答案:what “inline __attribute__((always_inline))” means in the function?

__attribute__((always_inline))

即使在首选项中禁用它,编译器也会尝试内联它,并且

inline

告诉编译器非常努力地内联函数。

【讨论】:

OP 的问题是它如何影响链接时间而不是编译时间 那里的答案只是指出要彻底阅读文档,这也是我在这种情况下所推荐的。您可能应该将该问题标记为与您找到的内容重复。尽管您提供了链接答案 +1 所提供的更多信息。 当我点击“标记”时,最接近复制的选项是“需要主持人干预”。这是我以后应该做的吗? 编辑了问题。我想知道 LTO(链接器)如何处理这些关键字,而不是编译器。 显然链接器执行自动内联,因此通过将该过程转移到编译器阶段,您可以加快链接阶段。不过,实际上可能并没有使整个过程更快。

以上是关于inline 关键字会影响链接时间优化吗? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

Go语言中的内联函数

SQL优化,列列表上的条件会影响优化吗?

内联函数

C++ 优化级别会影响 Swig Python 模块性能吗

Oracle SQL - FROM 子句中的 JOIN 顺序会影响性能优化吗?

跨区域的雪花复制:增加任一端的仓库大小会影响速度吗?