Hvad betyder det at inline en funktion, og hvordan påvirker det et program?

Svar

En inline-funktion er en funktion, for hvilken compileren kopierer koden fra funktionsdefinitionen direkte ind i koden for den kaldende funktion i stedet for at oprette et separat sæt instruktioner i hukommelsen. Dette eliminerer call-linkage-overhead og kan afsløre betydelige optimeringsmuligheder. Brug af “inline”-specifikatoren er kun et forslag til compileren om, at der kan udføres en inline-udvidelse; compileren kan frit ignorere forslaget.
Nogle af virkningerne af inlining er:

  1. I de fleste tilfælde øger inlining programmets størrelse. Men i nogle tilfælde, når funktionsstørrelsen er mindre end funktionsopkaldskodestørrelsen, kan inlining reducere programstørrelsen.
  2. I de fleste tilfælde kan inlining forbedre eksekveringstiden ved at undgå opkaldsoverhead og mulig gennemskuelighed for optimereren (hvilket gør det til en ikke-opake funktion) for flere optimeringsmuligheder. Men hvis funktionen ikke kaldes ofte, vil den ikke have synlig løbetidsforbedring, hvis den ikke kaldes ofte.
  3. Inlining øger den praktiske kobling ved at gøre den, der kalder funktionen, potentielt afhængig af den inlinede kodes interne implementeringsdetaljer. Problemet med praktisk kobling er, at når den inlinede kalder ændres, skal du kompilere opkalderen på ny. Dette er en omkostning for bygge- og udviklingstiden.

Den bedste fremgangsmåde ville være at vente med inlining, indtil du er færdig med at profilere dit program. Dette vil hjælpe med at afgøre, om du får nogen ekstra fordele af inlining.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret.