【发布时间】:2014-08-18 14:31:25
【问题描述】:
在许多关于函数声明中的inline 关键字的辩论中,有人会指出它实际上会使您的程序在某些情况下变慢——如果我是正确的话,主要是由于代码爆炸。我自己在实践中从未遇到过这样的例子。使用inline 可能会损害性能的实际代码是什么?
【问题讨论】:
-
请注意
inline只是一个建议;编译器可以随意忽略它。 -
有许多编译单元都包含相同的大内联方法并且只使用一次,那么你可能有一个退化的例子......仍然取决于不做链接时间代码生成等东西。
-
正如@dan04 所说,编译器不需要听你的,通常它很聪明。
-
很多地方,比如 max function ('int max(int a, int b)') 可以直接内联(实际上也可以定义为宏,效果一样)。程序不会“跳转”到内存中的那个函数,也不会用变量加载堆栈。大量使用。
-
当然内联可能是有害的 - 如果不是,编译器(或开发人员)将始终内联所有内容。它增加了寄存器压力和代码大小/L1i 缓存占用空间,其中任何一个都很容易成为比函数调用开销更大的性能问题。坦斯塔夫。
标签: c performance optimization inline-functions