для семейства c / c ++:
«стоимость» звонка не важна. если он должен быть быстрым, вам просто нужно убедиться, что компилятор может его встроить. это означает, что:
тело должно быть видно компилятору
тело действительно достаточно маленькое, чтобы считаться встроенным кандидатом.
метод не требует динамической отправки
Есть несколько способов сломать эту способность по умолчанию. например:
огромное количество команд уже в месте вызова. даже при раннем встраивании компилятор может вывести тривиальную функцию из строки (даже если он может генерировать больше инструкций / более медленное выполнение). раннее встраивание - это способность компилятора встроить функцию на ранней стадии, когда он видит, что вызов стоит больше, чем встроенный.
рекурсии
встроенное ключевое слово более или менее бесполезно в эту эпоху в отношении его первоначального намерения. тем не менее, многие компиляторы предлагают средства для восстановления смысла с помощью специальной директивы компилятора. Использование этой директивы (правильно) помогает значительно. обучение тому, как правильно его использовать, требует времени. если сомневаетесь, опустите директиву и оставьте ее на усмотрение компилятора.
при условии, что вы используете современный компилятор, нет оправдания избегать этой функции, если только вы не готовы перейти к сборке для этой конкретной программы.
как есть, и если производительность имеет решающее значение, у вас действительно есть два варианта:
1) научиться писать хорошо организованные программы для скорости. недостаток: больше времени компиляции
2) поддерживать плохо написанную программу
Я предпочитаю 1. любой день.
(да, я потратил много времени на написание программ, критичных к производительности)