我知道使用内联函数是为了摆脱函数调用。
我看到使用内联函数是使用存储和保持堆栈更空的好方法。
到处使用内联函数是一种好的编程习惯吗?
我是这么认为的,因为当函数很复杂时,编译器没有义务将内联函数用作内联函数,那么将这个小词附加inline
到每个函数中会是一个不错的方法吗?
inline 只是提示编译器内联函数。编译器还可以内联优化时未标记为内联的其他函数。使每个函数内联的问题在于,整个函数需要在一个头文件中,以便可以从多个源文件中调用它。这将增加编译时间。我的建议是忘记存在 inline 关键字,直到您遇到真正的性能问题。
我的一般规则是在inline
函数的内容小于或等于调用函数的开销时使用函数。
一个例子是getter或setter方法。
程序正常运行后,我将瓶颈部分中的一些函数转换为使用inline
. 但是,这是一种微优化,通常不会像重新设计算法那样节省那么多。
正如其他人所说,内联函数会对构建过程造成严重破坏,因为头文件已更改,并且必须重新构建对头文件的所有依赖项。非内联函数只需要构建一个翻译单元。