【问题标题】:Does it provide any benefits to simultaneously use __attribute__ ((pure)) and static inline?同时使用 __attribute__ ((pure)) 和静态内联是否有任何好处?
【发布时间】:2020-04-09 15:50:14
【问题描述】:

我正在优化一个 c 程序,我想知道在同一个函数声明中同时使用 __attribute__ ((pure))static inline 是否有意义?

【问题讨论】:

  • 你的意思是static __attribute__((pure)) 吗?
  • 原则上它可能很有用 - 如果由于某种原因编译器无法内联对函数的某些调用,它仍然会知道它是纯的并且可以避免冗余调用。

标签: c performance gcc compiler-optimization


【解决方案1】:

所有三个属性都相互正交:

  • static 表示该函数不在编译单元之外使用,因此它不会被导出,也不会污染外部命名空间
  • inline 增加函数内联的机会
  • pure 告诉编译器函数没有副作用,所以如果内联失败编译器仍然能够更积极地围绕函数调用优化代码

所以它们都不能替代另一个,它们应该同时使用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-05-20
    • 1970-01-01
    • 1970-01-01
    • 2019-11-17
    • 2012-05-09
    • 2019-03-11
    • 1970-01-01
    相关资源
    最近更新 更多