Krav: Da jeg så på .NET-kildekoden, fant jeg at noen metoder har lagt til funksjonen [MethodImpl(MethodImplOptions.AggressiveInlining)], men jeg så at MethodImpl-funksjonen kan påvirke oppførselen til JIT-kompilatoren. Noen tester ble utført basert på informasjon på Internett.
MethodImplOptions-konfigurasjon
Kode:
Inline-funksjon
Innen informatikk er en inline-funksjon (noen ganger kalt en online-funksjon eller en kompileringstidsutvidelsesfunksjon) en programmeringsspråkkonstruksjon som brukes for å antyde at kompilatorens inline-utvidelser (noen ganger kalt online-utvidelser) til noen spesielle funksjoner; Dette betyr at kompilatoren setter inn og erstatter den spesifiserte funksjonskroppen i stedet for hvert sted (kontekst) der funksjonen kalles, noe som sparer ekstra tid brukt på hvert kall til funksjonen. Når man velger å bruke inline-funksjoner, er det imidlertid nødvendig å veie plassen programmet opptar og effektiviteten i programkjøringen, fordi for mange komplekse funksjoner for inline-utvidelse vil medføre store kostnader for lagringsressurser. Det er også viktig å merke seg at inline-utvidelser av rekursive funksjoner kan føre til uendelig kompilering av enkelte kompilatorer.
MethodImplOptions.AggressiveInlining
Funksjon: Det anbefales at JIT-kompilatoren inline metoden så mye som mulig. Forklaring: Inline refererer til å erstatte et funksjonskall med selve funksjonskroppen, og dermed redusere overheaden ved funksjonskallet. Relevante scenarier: Egnet for små, ofte brukte metoder (f.eks. attributt-accessorer, enkle matematiske beregninger osv.). Merk: Dette er bare et «forslag», JIT-kompilatoren kan avgjøre om den faktisk skal inline eller ikke, avhengig av den faktiske situasjonen.
Resultatene av testen "inline" og "ikke inline" er som følger:
Testkoden er som følger:
Det ble funnet at CPU-bruken etter inline var mye lavere enn for ikke-inline-samtaler, faktisk ogsåIkke vær for engstelig, dagens kompilatorer er veldig smarte, selv uten å legge til denne funksjonen kan kompilatoren hjelpe deg med å optimalisere automatisk。 |