在C++函数中使用内联优化有什么注意事项?

Joh*_*ohn 2 c++ optimization inline

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

Nul*_*0rm 5

内联函数经常被过度使用,后果非常严重.内联向编译器指示可以考虑将函数用于内联扩展.如果编译器选择内联函数,则不会调用该函数,而是将其复制到位.性能增益来自于避免函数调用,堆栈帧操作和函数返回.收益可能相当大.

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

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