在编译器决定不插入它们之前,成员函数需要有多大?
(假设GCC和o2 / o3或任何其他高优化开关)。
答案 0 :(得分:0)
我相信功能越大,内联的好处越小。
内联的主要目的之一是避免函数调用和返回开销。
小功能,如吸气剂和制定者,是主要候选者。
通常不会内联更大的函数。这是由于数据处理指令与调用大小和返回开销的比率。与函数中的内容相比,开销很小。通常,删除函数调用和返回开销将对程序的性能产生微不足道的影响。
对于大小阈值,它取决于编译器。对于GCC,您应该查看文档或查看代码中的决策点。
答案 1 :(得分:0)
gcc内联的默认阈值大小为600.您可以使用标记-finline-limit
请注意,函数大小的度量不是直接以字节为单位,也不是指令计数,而是由编译器应用的其他测量,这使得很难确定函数是否会被内联。您可以假设基于函数内联到-finline-limit
其他大小函数的内联性的某个值到其他值的标记。
然而,单独的大小并不保证内联,并且决定可能因其他标志/编译器版本而异。
这种混乱是有充分理由的:因为内联主要是由于性能,编译器会调整它的目标架构/功能使用的措施。
来源: