c++ - 编译器内联什么调用?

标签 c++ optimization

您如何知道编译器会内联或不会内联什么?

有时我被告知一些小的优化是没有意义的,因为编译器会内联某些调用或计算,其他时候似乎推荐类似的优化。

让我们知道何时需要或不需要优化这些东西的规则是什么?

最佳答案

查看某个内容是否内联的唯一可靠方法是查看程序集。

是否内联某些内容完全取决于编译器 - 因为编译器最终决定是否内联某些内容。

撇开过早的优化:如果它真的很重要(或者如果您只是好奇),您可以使用特定于编译器的编译指示强制内联/不内联函数,然后适本地分析以查看是否你可以做出比编译器更好的决定。

尽管如此,在某些情况下您可以确定无法内联函数:

  • 在编译时无法确定类型的虚拟调用函数。
  • 除非可以静态确定最大深度,否则递归函数永远无法完全内联。

关于c++ - 编译器内联什么调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8271343/

相关文章:

c++ - 如何在 C++ 中正确返回数组(类成员)?

c++ - 如何读写 STL C++ 字符串?

c++ - 链表中的段错误

python - 具有可变 bin 成本和大小的 bin packing Python 查询

php - 在 SQL 中查找并计算重复记录并按最大计数排序

C:更快地访问查找表?

c++ - 忽略 C/C++ 中的死代码警告

c++ - 为什么 C++ 优化器对这些临时变量有问题,或者更确切地说,为什么在紧密循环中应该避免 `v[]`?

sql - 优化 SELECT 查询性能

c++ - printing cout << '\n' 乱码输出可以吗?