Hvordan bruke inline -funksjoner i C ++

Hvordan bruke inline -funksjoner i C ++
I C ++, begrepet “Inline -funksjoner” refererer til praksisen med å umiddelbart sette en funksjons kode inn i stedet i koden der funksjonssamtalen blir gjort i stedet for å få den til å kjøre som en distinkt funksjonsanrop. Når et program kaller en funksjon, må CPU stanse hovedkodens utførelse, gi kontroll til den kalt funksjonen og deretter gjenoppta utførelsen av den kalt funksjonen.

Det er en av optimaliseringsmetodene som brukes av programmerere for å fremskynde utførelsen av tidsfølsomme seksjoner av kode av kompilatorer. Overhead av en funksjonsanrop kan fjernes ved inlining en funksjon, som gjør det mulig for kompilatoren å erstatte funksjonssamtalen med funksjonens faktiske innhold.

Hvordan bruke inline -funksjoner i C++

Å bruke inline -funksjoner I C ++ må du ta med nøkkelordet 'på linje' Før funksjonserklæringen. Her er et eksempel:

inline int add (int a, int b)
returner A + B;

De 'på linje' Nøkkelord informerer kompilatoren for å erstatte en samtale til funksjonen gjennom programmets kode med funksjonens faktiske kode. Funksjonsdefinisjonen endres umiddelbart ved anropinstruksjonen i stedet for å bli lagret sammen med instruksjonens minneadresse og lastes inn i minnet.

Det er viktig å huske på at på linje Nøkkelord ber kompilatoren om noe i stedet for å gi det en kommando. I noen tilfeller kan kompilatoren bestemme seg for ikke å inline funksjonen. Derfor kan du bruke en makro i stedet for å definere på linje.

Eksempel på inline -funksjoner

Følgende er koden som skal brukes inline -funksjoner I C ++:

#inkludere
ved hjelp av navneområdet STD;
inline int setNum ()
retur 5;

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

I programmet over, funksjonen setNum () identifiseres som en inline -funksjon Bruke uttrykket "på linje". Kompilatoren erstatter anropserklæringen med definisjonen av setNum () Når denne inline -funksjonen kalles. Som et resultat erstatter instruksjonen 5 med setNum () og lagrer 5 i variabelen n.

Produksjon

Når skal du bruke inline -funksjoner i C++?

Selv om overhead for hver funksjonsanrop raskt kan montere, inline -funksjoner kan øke hastigheten i programmer som ringer mange mindre funksjonssamtaler betydelig. Likevel, Inlining Funksjoner er ikke alltid den ideelle strategien fordi den kan gjøre koden større og potensielt gjøre CPUs hurtigbufringssystem mindre effektiv.

Når du bestemmer om det skal inline en funksjon, Det er flere ting å vurdere.

1: Størrelsen på funksjonen

Størrelsen på funksjonen er et av de mest avgjørende elementene. Mindre funksjoner er vanligvis bedre kandidater til inlining Siden de har mindre sannsynlighet for å påvirke størrelsen på koden og CPU -hurtigbufringen negativt. Siden overhead av funksjonssamtaler kan utgjøre en flaskehals, er funksjoner som kalles ofte eller i nære løkker egnede kandidater til inlining.

2: Optimaliseringsnivå

Kompilatorens optimaliseringsnivå bør også vurderes. De fleste moderne kompilatorer har en "på linje" nøkkelord som kan brukes til å foreslå at en funksjon være inlined; Likevel, hvis kompilatoren dømmer at det ikke ville være noen hastighetsfordel, kan den fortsatt bestemme seg for ikke å inline funksjonen. Høyere optimaliseringsnivå er der kompilatorer ofte gjør mer aggressive optimaliseringer, så funksjoner som ikke er inlined på lavere nivåer kan også være inlined på høyere nivåer.

3: Effekten av inlining

Det er også viktig å vurdere virkningen av inlining på kodestørrelse. Samtidig som inlining Kan forbedre ytelsen ved å redusere overhead for funksjonssamtaler, det kan også øke størrelsen på koden, og potensielt redusere effektiviteten til CPUs hurtigbufringssystem. Generelt er funksjoner som er for store eller som inneholder løkker eller statiske variabler, dårlige kandidater for inlining.

4: Mikroarkitekturprogrammering

Inline -funksjoner brukes mest i mikroarkitekturprogrammering, i tilfeller der overheadkostnadene for funksjonssamtaler er viktige. Det er også verdifullt å lage små hjelperrutiner eller vurderere som kalles gjentatte ganger gjennom hele koden.

Konklusjon

Inline -funksjoner I C ++ er kraftige funksjoner for å forbedre programmets ytelse, men det er viktig å nøye vurdere virkningen av inlining på kodestørrelse, CPU -hurtigbufring og optimaliseringsnivå. Ved å velge nøye hvilke funksjoner som skal inline og på hvilket optimaliseringsnivå, kan utviklere oppnå betydelige ytelsesforbedringer uten å ofre kodestørrelse eller lesbarhet.