В програмуванні вбудовування підпрограм ( або ) — це ручна або виконувана компілятором оптимізація, за якої виклик підпрограми замінюється в місці виклику тілом цієї підпрограми. Вбудовування подібне до розгортання макросів, але відбувається під час компіляції без зміни початкового коду (тексту), тоді як розгортання макросів виконується до компіляції й утворює змінений текст, який потім обробляється компілятором.
Як правило, вбудовування коротких підпрограм підвищує швидкодію за дуже незначного збільшення обсягу коду, проте надмірне вбудовування може, навпаки, знизити швидкодію, оскільки вбудований код займає занадто багато місця в кеші інструкцій, а також істотно збільшує розмір програми.
Окрім дуже коротких підпрограм, зазвичай вбудовуються підпрограми, що не викликаються з багатьох місць у програмі, або викликаються в циклах.
Також часто вбудовуються підпрограми, що виконують захисні функції, щоб ускладнити їх вилучення з бінарного коду.
Після вбудовування підпрограми, її код стає частиною коду підпрограми верхнього рівня, і оптимізувальному компілятору відкриваються нові можливості для подальшої оптимізації їх загального коду.
Див. також Хвостова рекурсія Розмотування циклу
Посилання "Eliminating Virtual Function Calls in C++ Programs"; Gerald Aigner, Urs Hölzle "Reducing Indirect Function Call Overhead In C++ Programs"; Brad Calder, Dirk Grumwald ALTO - A Link-Time Optimizer for the DEC Alpha "Advanced techniques"; John R. Levine "Whole Program Optimization with Visual C++ .NET"; Brandon Bray