“内联”函数对“fastcall”调用约定的性能影响

时间:2012-07-05 21:36:39

标签: c compiler-construction inline fastcall

我有一个CRC计算功能,以极高的频率调用。我已经宣布为inline我尝试将其设为__attribute((hot))__,但我不确定是否可以购买任何东西。我正在考虑将其设为fastcall

根据gcc docs

  

快速调用       在Intel 386上,fastcall属性使编译器在寄存器ECX中传递第一个参数(如果是整数类型)   EDX寄存器中的第二个参数(如果是整数类型)。   后续和其他类型的参数在堆栈上传递。该   被调用的函数会弹出堆栈中的参数。如果数量   arguments是变量的,所有参数都被压入堆栈。

fastcall会使它基本上更快,因为输入参数将通过寄存器发送,而不是将它们推送到堆栈。使用inline,编译器会将函数调用替换为函数体。

问题是fastcallinline一起使用时甚至有意义吗?

1 个答案:

答案 0 :(得分:3)

如果你使你的函数inline,编译器将简单地#34;粘贴"无论你在哪里写,就像你说的那样。

因此,不会调用任何内容,因此使用fastcall将毫无意义。