c++ - 在 C++ 函数中使用内联优化有哪些注意事项?

标签 c++ optimization inline

内联不同类型的函数有什么好处?在围绕它们进行开发时我需要注意哪些问题?我对分析器不是很有用,但许多不同的算法应用程序似乎将速度提高了 8 倍,如果你能给我任何对我很有用的指示。

最佳答案

内联函数经常被过度使用,后果很严重。内联向编译器指示可以考虑对函数进行内联扩展。如果编译器选择内联函数,则不会调用该函数,而是将其复制到位。性能提升来自避免函数调用、堆栈帧操作和函数返回。 yield 可能相当可观。

请注意,它们会增加程序大小。它们可以通过减少调用者的引用位置来增加执行时间。当大小增加时,调用者的内部循环可能不再适合处理器缓存,从而导致不必要的缓存未命中和随之而来的性能损失。内联函数也会增加构建时间——如果内联函数发生变化,就必须重新编译世界。一些准则:

  • 避免内联函数,直到分析表明哪些函数可以从内联中受益。
  • 在使用和不使用自动内联进行分析后,考虑使用编译器的自动内联选项。
  • 仅限函数调用开销相对于函数代码较大的内联函数。换句话说,内联大型函数或调用其他(可能内联)函数的函数不是一个好主意。

关于c++ - 在 C++ 函数中使用内联优化有哪些注意事项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3539785/

相关文章:

c++ - C++ 中 lambda 的前向声明

java - 为什么在使用 sharedPreferences 时应该对字符串进行硬编码?

javascript - 使用 d3 javascript 库附加 DOM/SVG 元素会更改变量引用/范围,为什么?

css - 由于另一个 div 而没有明显原因的 Div 偏移

haskell - 动态链接是否会损害 GHC 中的内联性能?

c++ - 如何设置窗口的默认位置?

c++ - 每 block 奖励少于 1 个硬币的比特币 fork

c++ - 替换 QVariant::Handler::canConvert

mysql - 'unique' 列字段是否暗示了 MySQL 的索引,如果是,为什么?

c++ - 缓存优化理论