Come utilizzare le funzioni inline in C ++

Come utilizzare le funzioni inline in C ++
In C ++, il termine "Funzioni in linea" si riferisce alla pratica di mettere immediatamente il codice di una funzione nel luogo nel codice in cui viene effettuata la chiamata della funzione piuttosto che eseguirla come una chiamata di funzione distinta. Quando un programma chiama una funzione, la CPU deve fermare l'esecuzione del codice principale, passare il controllo alla funzione chiamata e quindi riprendere l'esecuzione della funzione chiamata.

È uno dei metodi di ottimizzazione utilizzati dai programmatori per accelerare l'esecuzione di sezioni di codice sensibili al tempo da parte dei compilatori. Il sovraccarico di una chiamata di funzione può essere rimosso in linea UN funzione, che consente al compilatore di sostituire la chiamata funzione con il contenuto effettivo della funzione.

Come utilizzare le funzioni inline in C++

Usare funzioni inline In C ++, devi includere la parola chiave 'in linea' Prima della dichiarazione della funzione. Ecco un esempio:

inline int add (int a, int b)
restituire a + b;

IL 'in linea' La parola chiave informa il compilatore per sostituire una chiamata alla funzione in tutto il codice del programma con il codice effettivo della funzione. La definizione della funzione viene modificata immediatamente sull'istruzione chiamante piuttosto che essere memorizzata insieme all'indirizzo di memoria dell'istruzione e caricata in memoria.

È importante tenere presente che il in linea La parola chiave chiede al compilatore qualcosa piuttosto che dargli un comando. In alcune circostanze, il compilatore può decidere di non in linea con la funzione. Quindi, puoi usare una macro al posto della definizione in linea.

Esempio di funzioni inline

Quello che segue è il codice da utilizzare funzioni inline In C ++:

#includere
Utilizzo dello spazio dei nomi std;
inline int setNum ()
Ritorno 5;

int main ()
int n = setNum ();
cout << " The inline function returned: " << n <<"\n";
restituzione 0;

Nel programma sopra, la funzione setNum () è identificato come un funzione inline usando la frase "in linea". Il compilatore sostituisce la dichiarazione di chiamata con la definizione di setNum () Quando si chiama questa funzione in linea. Di conseguenza, l'istruzione sostituisce 5 per setNum () e memorizza 5 nella variabile n.

Produzione

Quando utilizzare le funzioni inline in C++?

Sebbene il sovraccarico di ciascuna chiamata di funzione possa rapidamente montare, funzioni inline può aumentare considerevolmente la velocità nei programmi che effettuano numerose chiamate di funzione minore. Tuttavia, funzioni in linea non è sempre la strategia ideale perché può rendere il codice più grande e potenzialmente rendere meno efficace il sistema di memorizzazione nella cache della CPU.

Quando si determina se in linea una funzione, Ci sono diverse cose da considerare.

1: dimensione della funzione

La dimensione della funzione è uno degli elementi più cruciali. Funzioni più piccole sono in genere candidati migliori per in linea Dal momento che hanno meno probabilità di influire negativamente sulla dimensione del codice e nella cache della CPU. Inoltre, poiché il sovraccarico delle chiamate di funzione potrebbe costituire un collo di bottiglia, le funzioni che vengono chiamate frequentemente o in circuiti ravvicinati sono candidati adatti in linea.

2: livello di ottimizzazione

Anche il livello di ottimizzazione del compilatore dovrebbe essere considerato. La maggior parte dei compilatori moderni ha un "in linea" Parole chiave che possono essere utilizzate per proporre una funzione inlineato; Tuttavia, se i giudici del compilatore non ci sarebbero alcun vantaggio di velocità, può comunque decidere di non in linea con la funzione. Livelli di ottimizzazione più elevati sono dove i compilatori spesso eseguono ottimizzazioni più aggressive, quindi funzioni che non lo sono inlineato A livelli più bassi possono anche essere inlineato a livelli più alti.

3: Impatto di Inlining

È anche importante considerare l'impatto di in linea sulla dimensione del codice. Mentre in linea può migliorare le prestazioni riducendo il sovraccarico delle chiamate di funzione, può anche aumentare le dimensioni del codice, riducendo potenzialmente l'efficienza del sistema di memorizzazione nella cache della CPU. In generale, le funzioni troppo grandi o che contengono anelli o variabili statiche sono poveri candidati per in linea.

4: Programmazione di microarchitettura

Funzioni inline sono più utilizzati nella programmazione della microarchitettura, nei casi in cui il costo generale delle chiamate funzioni è significativo. È anche prezioso nella creazione di piccole routine o valutatori che vengono chiamati ripetutamente in tutto il codice.

Conclusione

Funzioni inline In C ++ ci sono funzioni potenti per migliorare le prestazioni del programma, ma è importante considerare attentamente l'impatto di in linea Su dimensione del codice, memorizzazione nella cache della CPU e livello di ottimizzazione. Selezionando attentamente quali funzioni in linea e a quale livello di ottimizzazione, gli sviluppatori possono ottenere significativi miglioramenti delle prestazioni senza sacrificare le dimensioni del codice o la leggibilità.