Krav: När jag tittade på .NET-källkoden upptäckte jag att vissa metoder har lagt till funktionen [MethodImpl(MethodImplOptions.AggressiveInlining)], men jag såg att MethodImpl-funktionen kan påverka JIT-kompilatorns beteende. Vissa tester genomfördes baserat på information på internet.
MethodImplOptions-konfiguration
Kod:
Inline-funktion
Inom datavetenskap är en inline-funktion (ibland kallad en onlinefunktion eller en kompileringstidsexpansionsfunktion) en programmeringsspråkskonstruktion som används för att föreslå att kompilatorns inline-tillägg (ibland kallade online-tillägg) till vissa specialfunktioner; Detta innebär att kompilatorn infogar och ersätter den specificerade funktionskroppen i stället för varje plats (kontext) där funktionen anropas, vilket sparar den extra tid som läggs på varje anrop till funktionen. Men när man väljer att använda inline-funktioner är det nödvändigt att väga det utrymme som programmet upptar och effektiviteten i programkörningen, eftersom för många komplexa funktioner för inline-expansion medför stora kostnader för lagringsresurser. Det är också viktigt att notera att inline-utvidgningar av rekursiva funktioner kan orsaka oändlig kompilering av vissa kompilatorer.
MethodImplOptions.AggressiveInlining
Funktion: Det rekommenderas att JIT-kompilatorn inlinerar metoden så mycket som möjligt. Förklaring: Inline syftar på att ersätta ett funktionsanrop med funktionskroppen själv, vilket minskar overheaden för funktionsanropet. Tillämpliga scenarier: Lämplig för små, ofta kallade metoder (t.ex. attributaccessorer, enkla matematiska beräkningar, etc.). Obs: Detta är bara ett "förslag", JIT-kompilatorn kan avgöra om den faktiskt ska inline:a eller inte, beroende på den faktiska situationen.
Resultaten av testet "inline" och "not inline" är följande:
Testkoden är följande:
Det visade sig att CPU-användningen efter inline var mycket lägre än för icke-inline-samtal, faktiskt ocksåVar inte för orolig, dagens kompilatorer är mycket smarta, även utan att lägga till denna funktion kan kompilatorn hjälpa dig att automatiskt optimera。 |