Cosa significa inlineare una funzione e come influisce su un programma?

Risposta

Una funzione inline è una per la quale il compilatore copia il codice dalla definizione della funzione direttamente nel codice della funzione chiamante piuttosto che creare un insieme separato di istruzioni in memoria. Questo elimina l’overhead del call-linkage e può esporre significative opportunità di ottimizzazione. Usare lo specificatore “inline” è solo un suggerimento al compilatore che un’espansione inline può essere eseguita; il compilatore è libero di ignorare il suggerimento.
Alcuni degli effetti dell’inlining sono:

  1. Nella maggior parte dei casi, l’inlining aumenta la dimensione del programma. Ma in alcuni casi, quando la dimensione della funzione è più piccola della dimensione del codice di chiamata della funzione, l’inlining potrebbe ridurre la dimensione del programma.
  2. Nella maggior parte dei casi, l’inlining potrebbe migliorare il tempo di esecuzione evitando l’overhead della chiamata, e il possibile see-through da parte dell’ottimizzatore (rendendolo una funzione non opaca) per maggiori opportunità di ottimizzazione. Tuttavia, se la funzione non viene chiamata frequentemente, non avrà un miglioramento visibile del tempo di esecuzione.
  3. Inlining aumenta l’accoppiamento pratico facendo sì che il chiamante si affidi potenzialmente ai dettagli di implementazione interna del codice inlined. Il problema con l’accoppiamento pratico è che quando il callee inlined cambia, dovete ricompilare il chiamante. Questo è un costo per la costruzione e il tempo di sviluppo.

L’approccio migliore sarebbe quello di trattenere l’inlining fino a quando non avrete finito di profilare il vostro programma. Questo vi aiuterà a determinare se otterrete qualche beneficio aggiuntivo dall’inlining.

.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.