Влияние на производительность встроенной функции с вызовом fastcall
У меня есть функция расчета CRC, которая вызывается с очень высокой частотой. Я уже объявил как inline
я пытался сделать это __attribute((hot))__
но я не уверен, что это что-то покупает. Я думаю о том, чтобы сделать это fastcall
,
Согласно документации GCC,
fastcall В Intel 386 атрибут fastcall заставляет компилятор передавать первый аргумент (если он целочисленного типа) в регистр ECX и второй аргумент (если он целочисленного типа) в регистр EDX. Последующие и другие типизированные аргументы передаются в стек. Вызванная функция вытолкнет аргументы из стека. Если число аргументов является переменным, все аргументы помещаются в стек.
fastcall
сделает это существенно быстрее, потому что входные параметры будут отправляться через регистры, а не помещать их в стек. с inline
, компилятор заменит вызов функции на тело функции.
Так что вопрос в том fastcall
при использовании с inline
даже имеет смысл?
1 ответ
Если вы делаете свою функцию inline
компилятор просто "вставит" его туда, куда вы пишете, как вы сказали.
Поэтому ничего не будет вызываться, и поэтому с помощью fastcall
было бы бессмысленно.