我有一个CRC计算功能,以极高的频率调用。我已经宣布为inline
我尝试将其设为__attribute((hot))__
,但我不确定是否可以购买任何东西。我正在考虑将其设为fastcall
。
根据gcc docs,
快速调用 在Intel 386上,fastcall属性使编译器在寄存器ECX中传递第一个参数(如果是整数类型) EDX寄存器中的第二个参数(如果是整数类型)。 后续和其他类型的参数在堆栈上传递。该 被调用的函数会弹出堆栈中的参数。如果数量 arguments是变量的,所有参数都被压入堆栈。
fastcall
会使它基本上更快,因为输入参数将通过寄存器发送,而不是将它们推送到堆栈。使用inline
,编译器会将函数调用替换为函数体。
问题是fastcall
与inline
一起使用时甚至有意义吗?
答案 0 :(得分:3)
如果你使你的函数inline
,编译器将简单地#34;粘贴"无论你在哪里写,就像你说的那样。
因此,不会调用任何内容,因此使用fastcall
将毫无意义。