Hardcalling-convention

Что такое calling convention overhead?

1Постановка

Разберём, что от вас хотят в этом вопросе и как к нему подступиться на собеседовании.

2Решение

Overhead вызова функции (не-inline): сохранение registers, выделение stack frame, передача аргументов, call/ret, branch prediction для return address. Cost ~3–10 ns на обычный call.

; типичный пролог/эпилог на x64
push rbp
mov  rbp, rsp
sub  rsp, 32              ; stack frame + shadow space
; ... тело функции ...
mov  rsp, rbp
pop  rbp
ret                        ; pop return address + jump

На x64 первые 6 аргументов в registers (rdi, rsi, rdx, rcx, r8, r9), остальные через stack. this — скрытый первый параметр. Virtual call — дополнительно load из vtable (indirect), не инлайнится, branch prediction может ошибаться. Для hot-loop мелких функций — inline.

3Как отвечать

  • Сначала уточните условия и ограничения, покажите аналитическое мышление.
  • Рассуждайте вслух — интервьюеру важен ход мысли, а не только финальный ответ.
  • Оцените сложность по времени и памяти (Big-O), если это алгоритмический вопрос.
💡

На реальном собеседовании Alffert подскажет развёрнутый ответ в реальном времени.