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

根据gcc docs

快速通话
在Intel 386上,fastcall属性使编译器在寄存器ECX中传递第一个参数(如果是整数类型),并且
寄存器EDX中的第二个参数(如果是整数类型)。
后续和其他类型的参数在堆栈上传递。的
被调用的函数会将参数弹出堆栈。如果数量
arguments是变量,所有参数都压入堆栈。
fastcall将使它实质上更快,因为输入参数将通过寄存器发送,而不是将其压入堆栈。使用inline,编译器会将函数调用替换为函数的主体。

那么问题是,与fastcall一起使用时inline甚至有意义吗?

最佳答案

如果您将函数设为inline,那么编译器将简单地将其“粘贴”到您编写的位置,如您所说。

因此,什么都不会被调用,因此使用fastcall将毫无意义。

08-15 23:07