Влияние на производительность встроенной функции с вызовом fastcall

У меня есть функция расчета CRC, которая вызывается с очень высокой частотой. Я уже объявил как inline я пытался сделать это __attribute((hot))__ но я не уверен, что это что-то покупает. Я думаю о том, чтобы сделать это fastcall,

Согласно документации GCC,

fastcall В Intel 386 атрибут fastcall заставляет компилятор передавать первый аргумент (если он целочисленного типа) в регистр ECX и второй аргумент (если он целочисленного типа) в регистр EDX. Последующие и другие типизированные аргументы передаются в стек. Вызванная функция вытолкнет аргументы из стека. Если число аргументов является переменным, все аргументы помещаются в стек.

fastcall сделает это существенно быстрее, потому что входные параметры будут отправляться через регистры, а не помещать их в стек. с inline, компилятор заменит вызов функции на тело функции.

Так что вопрос в том fastcall при использовании с inline даже имеет смысл?

1 ответ

Если вы делаете свою функцию inlineкомпилятор просто "вставит" его туда, куда вы пишете, как вы сказали.

Поэтому ничего не будет вызываться, и поэтому с помощью fastcall было бы бессмысленно.

Другие вопросы по тегам