我有一个 CRC 计算函数,它以极高的频率被调用。我已经宣布,因为inline
我试图让它成为一个__attribute((hot))__
,但我不确定这是否能买到任何东西。我正在考虑把它做成一个fastcall
.
根据gcc 文档,
fastcall 在 Intel 386 上,fastcall 属性使编译器在寄存器 ECX 中传递第一个参数(如果是整数类型),在寄存器 EDX 中传递第二个参数(如果是整数类型)。随后的和其他类型的参数在堆栈上传递。被调用的函数将从堆栈中弹出参数。如果参数的数量是可变的,则所有参数都被压入堆栈。
fastcall
将使它本质上更快,因为输入参数将通过寄存器发送,而不是将它们推入堆栈。使用inline
,编译器将用函数体替换函数调用。
所以问题是fastcall
当使用时是否inline
有意义?