在成员函数通常没有内联之前有多大?

时间:2014-05-23 19:09:43

标签: c++ compiler-construction inline

在编译器决定不插入它们之前,成员函数需要有多大?

(假设GCC和o2 / o3或任何其他高优化开关)。

2 个答案:

答案 0 :(得分:0)

我相信功能越大,内联的好处越小。

内联的主要目的之一是避免函数调用和返回开销。

小功能,如吸气剂和制定者,是主要候选者。

通常不会内联更大的函数。这是由于数据处理指令与调用大小和返回开销的比率。与函数中的内容相比,开销很小。通常,删除函数调用和返回开销将对程序的性能产生微不足道的影响。

对于大小阈值,它取决于编译器。对于GCC,您应该查看文档或查看代码中的决策点。

答案 1 :(得分:0)

gcc内联的默认阈值大小为600.您可以使用标记-finline-limit

更改它

请注意,函数大小的度量不是直接以字节为单位,也不是指令计数,而是由编译器应用的其他测量,这使得很难确定函数是否会被内联。您可以假设基于函数内联到-finline-limit其他大小函数的内联性的某个值到其他值的标记。

然而,单独的大小并不保证内联,并且决定可能因其他标志/编译器版本而异。

这种混乱是有充分理由的:因为内联主要是由于性能,编译器会调整它的目标架构/功能使用的措施。


来源:

GCC Optimization Options