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 подскажет развёрнутый ответ в реальном времени.