Cerințe: Privind codul sursă .NET, am observat că unele metode au adăugat funcția [MethodImpl(MethodImplOptions.AggressiveInlining)], dar am observat că funcția MethodImpl poate afecta comportamentul compilatorului JIT. Unele teste au fost efectuate pe baza informațiilor de pe Internet.
Configurația MethodImplOptions
Cod:
Funcția inline
În informatică, o funcție inline (uneori numită funcție online sau funcție de expansiune în timp de compilare) este un construct de limbaj de programare folosit pentru a sugera că compilatorul extinde în linie (uneori numite extensii online) către anumite funcții speciale; Aceasta înseamnă că compilatorul inserează și înlocuiește corpul funcției specificat în locul fiecărui loc (context) unde funcția este apelată, economisind astfel timpul suplimentar petrecut pentru fiecare apel către funcție. Totuși, atunci când alegi utilizarea funcțiilor inline, este necesar să se cântărească spațiul ocupat de program și eficiența execuției programului, deoarece prea multe funcții complexe pentru expansiune în linie vor genera cheltuieli mari cu resursele de stocare. Este de asemenea important de menționat că extensiile inline ale funcțiilor recursive pot cauza compilarea infinită a unor compilatoare.
MethodImplOptions.AggressiveInlining
Funcție: Se recomandă ca compilatorul JIT să integreze metoda cât mai mult posibil. Explicație: Inline se referă la înlocuirea unui apel de funcție cu corpul funcției însuși, reducând astfel overhead al apelului funcției. Scenarii aplicabile: Potrivite pentru metode mici, frecvent apelate (de exemplu, accesorii de atribute, calcule matematice simple etc.). Notă: Aceasta este doar o "sugestie", compilatorul JIT poate decide dacă să fie sau nu în linie, în funcție de situația reală.
Rezultatele testului "inline" și "not inline" sunt următoarele:
Codul testului este următorul:
S-a constatat că utilizarea CPU-ului după inline era mult mai mică decât cea a apelurilor non-inline, de faptNu fi prea anxios, compilatoarele de azi sunt foarte inteligente, chiar și fără a adăuga această funcție, compilatorul te poate ajuta să optimizezi automat。 |