内联不同类型的函数有什么好处?在围绕它们进行开发时我需要注意哪些问题?我对分析器不是很有用,但许多不同的算法应用程序似乎将速度提高了 8 倍,如果你能给我任何对我很有用的指示。
最佳答案
内联函数经常被过度使用,后果很严重。内联向编译器指示可以考虑对函数进行内联扩展。如果编译器选择内联函数,则不会调用该函数,而是将其复制到位。性能提升来自避免函数调用、堆栈帧操作和函数返回。 yield 可能相当可观。
请注意,它们会增加程序大小。它们可以通过减少调用者的引用位置来增加执行时间。当大小增加时,调用者的内部循环可能不再适合处理器缓存,从而导致不必要的缓存未命中和随之而来的性能损失。内联函数也会增加构建时间——如果内联函数发生变化,就必须重新编译世界。一些准则:
- 避免内联函数,直到分析表明哪些函数可以从内联中受益。
- 在使用和不使用自动内联进行分析后,考虑使用编译器的自动内联选项。
- 仅限函数调用开销相对于函数代码较大的内联函数。换句话说,内联大型函数或调用其他(可能内联)函数的函数不是一个好主意。
关于c++ - 在 C++ 函数中使用内联优化有哪些注意事项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3539785/