Răspuns
O funcție inline este o funcție pentru care compilatorul copiază codul din definiția funcției direct în codul funcției de apelare, în loc să creeze un set separat de instrucțiuni în memorie. În acest fel se elimină supraîncărcarea prin apelare și se pot expune oportunități semnificative de optimizare. Folosirea specificatorului „inline” este doar o sugestie pentru compilator că se poate efectua o expansiune inline; compilatorul este liber să ignore sugestia.
Câteva dintre efectele inlining-ului sunt:
- În majoritatea cazurilor, inlining-ul crește dimensiunea programului. Dar, în unele cazuri, atunci când dimensiunea funcției este mai mică decât dimensiunea codului de apelare a funcției, inlining-ul ar putea reduce dimensiunea programului.
- În majoritatea cazurilor, inlining-ul ar putea îmbunătăți timpul de execuție prin evitarea suprasolicitării de apelare și posibila vizibilitate de către optimizator (făcându-l o funcție neopacă) pentru mai multe oportunități de optimizare. Cu toate acestea, dacă funcția nu este apelată frecvent, nu va avea o îmbunătățire vizibilă a timpului de execuție.
- Includerea crește cuplajul practic prin faptul că face ca apelantul să se bazeze potențial pe detaliile interne de implementare ale codului inclus. Problema cu cuplarea practică este că, atunci când se schimbă apelantul inlined, trebuie să recompilați apelantul. Acest lucru reprezintă un cost pentru timpul de construcție și de dezvoltare.
Cea mai bună abordare ar fi să nu faceți inlining până când nu terminați de profilat programul dumneavoastră. Acest lucru vă va ajuta să determinați dacă obțineți vreun beneficiu suplimentar din inlining.
.