another question上使用inline指令有一个很好的解释

谁能解释我在头文件上使用inline__always_inline有什么区别吗?

而且,什么时候我更喜欢__always_inline而不是inline或反之亦然?

最佳答案

这里的答案都没有真正回答何时应该使用内联而不是始终内联的问题,但是答案非常简单。除非您确切地知道自己在做什么,并且了解内联要注释的功能的性能含义,否则应该几乎总是使用内联,因为错误的内联决策在最坏的情况下会使程序变慢,并且在执行时包括内联。您不应该内联,也不应该在应该内联时内联。一般而言,在大多数情况下,编译器在决定这一点时非常聪明,但这并不完美。如果是这样,则不需要inline关键字。的确,C语言对于inline关键字的确切含义深奥不胜,因此您应该在使用它之前先读懂它,但是最好最终决定是否将函数内联到编译器。

话虽这么说,当您优化代码的关键部分时(如果您不关心性能,为什么要内联代码呢?),有时编译器会做出错误的决定。在这种情况下,您可以使用noinline或alwaysinline纠正行为。但是,在做出此决定之前,您应始终使自己熟悉所讨论的功能的组装;过多的内联会增加代码大小和寄存器压力,并降低缓存的局部性。太少会使代码量级变慢。

10-07 23:29