.NET 4.5 рдореЗрдВ рдорд▓реНрдЯреА-рдХреЛрд░ JIT рд╕рдВрдХрд▓рди


рдРрддрд┐рд╣рд╛рд╕рд┐рдХ рд░реВрдк рд╕реЗ, .NET рдбреЗрд╡рд▓рдкрд░реНрд╕ рдиреЗ Ngen рдХреА рдореВрд▓ рдЫрд╡рд┐ рдЬрдирд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИред рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рдЗрдВрд╕реНрдЯреЙрд▓рд░ рд╣реИ, рдФрд░ рдЖрдк рдЗрди рдЪрд┐рддреНрд░реЛрдВ рдХреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреА рд╕реНрдерд╛рдкрдирд╛ рдХреЗ рджреМрд░рд╛рди рдЙрддреНрдкрдиреНрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдЕрдиреНрдп рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЬрдм рдЖрдкрдХреЗ рдкрд╛рд╕ рдЗрдВрд╕реНрдЯреЙрд▓рд░ рдирд╣реАрдВ рд╣реИ рдпрд╛ рдЖрдкрдХреЗ рдкрд╛рд╕ Ngen рддрдХ рдкрд╣реБрдВрдЪ рдирд╣реАрдВ рд╣реИ, рддреЛ рдЖрдкрдХрд╛ рдЖрд╡реЗрджрди рдЖрд╡рд╢реНрдпрдХ рдХреЗ рд░реВрдк рдореЗрдВ JIT рд╕рдВрдХрд▓рди рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рдХрд░реЗрдЧрд╛, рдЬреЛ рдЗрд╕рдХреА рд▓реЛрдбрд┐рдВрдЧ рдХреЛ рдзреАрдорд╛ рдХрд░ рджреЗрдЧрд╛ред CLR рдбреЗрд╡рд▓рдкрд░реНрд╕ рдиреЗ .NET рдХреЗ рдирдП рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдПрдХ рд╕рдорд╛рдзрд╛рди рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рд╣реИ - рдЕрдиреБрдХреВрд▓рди рдкреНрд░реЛрдлрд╛рдЗрд▓ рдмрдирд╛рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреЗ рд╕рд╛рде рдПрдХ рдорд▓реНрдЯреА-рдХреЛрд░ JIT рд╕рдВрдХрд▓рдиред

рдорд▓реНрдЯреА-рдХреЛрд░ рдЬреЗрдЖрдИрдЯреА рд╕рдВрдХрд▓рди рдХреЗ рд╕рд╛рде, рд╕рдорд╛рдирд╛рдВрддрд░ рдореЗрдВ рджреЛ рдХреЛрд░ рдкрд░ рдХреЛрдб рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдмреВрдЯ рд╕рдордп рдкрд░ рдЖрдк рдЬрд┐рддрдирд╛ рдЕрдзрд┐рдХ рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдВрдЧреЗ, рдЙрддрдирд╛ рд╣реА рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рдорд▓реНрдЯреА-рдХреЛрд░ JIT рд╕реЗ рддреНрд╡рд░рдг рд╣реЛрдЧрд╛ред рдЖрдк рдбрд╛рдЙрдирд▓реЛрдб рд╕рдордп рдореЗрдВ 20-50% рдХреА рдХрдореА рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫреА рдЦрдмрд░ рд╣реИ рдЬреЛ рдмрдбрд╝реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╡рд┐рдХрд╕рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ Ngen рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реИрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдХреЛрдб рдореЗрдВ рдХреБрдЫ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛ред

рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ


рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдЖрд╡реЗрджрди рдореЗрдВ рдХреЗрд╡рд▓ рджреЛ рддрд░реАрдХреЛрдВ рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛:

.NET рд░рдирдЯрд╛рдЗрдо, рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдЪрд▓рд╛рдП рдЬрд╛ рд░рд╣реЗ рддрд░реАрдХреЛрдВ рдХреЗ рдЕрдиреБрдХреНрд░рдо рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдПрдХ рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдЧрд╛ред рдЗрд╕ рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдХреЛ рдбрд┐рд╕реНрдХ рдкрд░ рд╕рд╣реЗрдЬрд╛ рдЬрд╛рдПрдЧрд╛ред рд╕реАрдзреЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ рдХрд╣реЗрдВ, рдЬрдм рдЖрдк рдкрд╣рд▓реА рдмрд╛рд░ рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдЙрд╕реЗ "рд░рд┐рдХреЙрд░реНрдб рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛" ( рдпрд╣рд╛рдВ рд╕реЗ рд▓реА рдЧрдИ рддрд╕реНрд╡реАрд░реЗрдВ):


рдЬрдм рдЕрдЧрд▓реА рдмрд╛рд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ .NET рд░рдирдЯрд╛рдЗрдо рдПрдХ рддреИрдпрд╛рд░ рдХрд┐рдП рдЧрдП рдкреНрд░реЛрдлрд╛рдЗрд▓ рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдЧрд╛ рдФрд░ рдЗрд╕реЗ рдкрд╛рдП рдЬрд╛рдиреЗ рдкрд░, рдЙрд╕ рдЕрдиреБрдХреНрд░рдо рдореЗрдВ рдЬреЗрдЖрдИрдЯреА рд╕рдВрдХрд▓рди рд╢реБрд░реВ рдХрд░реЗрдЧрд╛ рдЬрд┐рд╕рдореЗрдВ рд╡реЗ рдкреНрд░реЛрдлрд╛рдЗрд▓ рдореЗрдВ рд╕рд╣реЗрдЬреЗ рдЧрдП рдереЗред


рдорд▓реНрдЯреА-рдХреЛрд░ рдЬреЗрдЖрдИрдЯреА рд╕рдВрдХрд▓рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛


рдорд▓реНрдЯреА-рдХреЛрд░ рдЬреЗрдЖрдИрдЯреА рд╕рдВрдХрд▓рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИред .NET 4.5 рдореЗрдВ, System.Runtime.ProfileOptimization рдХреНрд▓рд╛рд╕ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╣рдо рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╢реБрд░реВ рд╣реЛрдиреЗ рдкрд░ рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рд░рд┐рдХреЙрд░реНрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдХреЛрдб рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:

ProfileOptimization.SetProfileRoot(@"C:\MyApp"); ProfileOptimization.StartProfile("LaunchProfile"); 

SetProfileRoot - рд╡рд░реНрддрдорд╛рди AppDomain рдХреЗ рд▓рд┐рдП рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝реЗрд╢рди рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╡рд╣ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ рдЬрд╣рд╛рдБ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝реЗрд╢рди рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕рд╣реЗрдЬрд╛ рдЬрд╛рдПрдЧрд╛ред рд╕рд┐рдВрдЧрд▓-рдХреЛрд░ рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░ рдЗрд╕ рдкрджреНрдзрддрд┐ рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

StartProfile - рдЙрди рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрдлрд╛рдЗрд▓рд┐рдВрдЧ рдФрд░ рдЬрд╕реНрдЯ -рдЗрди-рдЯрд╛рдЗрдо рд╕рдВрдХрд▓рди рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдХреЛ рд▓рд┐рдЦреЗ рдЧрдП рдереЗ (рдпрджрд┐ рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рдореМрдЬреВрдж рд╣реИ)ред

ASP.NET 4.5 рдореЗрдВ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдорд▓реНрдЯреА-рдХреЛрд░ JIT рд╕рдВрдХрд▓рди рд╢рд╛рдорд┐рд▓ рд╣реИред рдпрджрд┐ рдЖрдк рдЗрд╕ рдЕрдиреБрдХреВрд▓рди рдХреЛ рдмрдВрдж рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЕрдкрдиреЗ web.config рдореЗрдВ compilation рдХрд╛ рдЧреБрдг рдЬреЛрдбрд╝реЗрдВ:

 <compilation profileGuidedOptimizations="None" /> 

рдпрджрд┐ рдЖрдк .NET 4.5 рдореЗрдВ рдЕрдкрдЧреНрд░реЗрдб рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ .NET 4.0 рдХреЗ рд▓рд┐рдП рдХреЙрдкреА рдХрд┐рдП рдЧрдП рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдЗрд╕ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ .NET 4.5 рд╕реНрдерд╛рдкрд┐рдд рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░ рдЕрдиреБрдХреВрд▓рди рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рд╣реИ ред

рдпрджрд┐ рдЖрдкрдХреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдорд▓реНрдЯреА-рд╕реНрдЯреЗрдЬ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рддрд░реНрдХ рд╣реИ, рддреЛ рдЖрдк рдХрдИ рд╕реНрдерд╛рдиреЛрдВ рдкрд░ StartProfile рдХреЛ рдХреЙрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдЖрд░рдВрднрд┐рдХ рд▓реЙрдиреНрдЪ рдХреЗ рдмрд╛рдж рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдкрд╛рд╕ рдПрдХ рд╡рд┐рдХрд▓реНрдк (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореЗрдиреВ рдореЗрдВ) рд╣реИ рдЬреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЗ рдЕрдЧрд▓реЗ рднрд╛рдЧ рдореЗрдВ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЖрдк рдХреЛрдб рдХреЗ рд╡рд┐рднрд┐рдиреНрди рднрд╛рдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкреНрд░реЛрдлрд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдЖрдк рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ JIT рд╕рдВрдХрд▓рди рдХрд╛ рдЕрдиреБрдХреВрд▓рди рдХрд░рддреЗ рд╣реИрдВред

рдкреНрд░рднрд╛рд╡рд╢реАрд▓рддрд╛


рдмрдбрд╝реЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП, рдбрд╛рдЙрдирд▓реЛрдб рд╕рдордп рдореЗрдВ рдХрдореА рд▓рдЧрднрдЧ 50% рд╣реЛ рд╕рдХрддреА рд╣реИред рдЗрд╕реЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдбреЗрд╡рд▓рдкрдореЗрдВрдЯ рдЯреАрдо рдиреЗ рдкреЗрдВрдЯ.рдиреЗрдЯ рдПрдбрд┐рдЯрд░ рдХреЛ рд▓рд┐рдпрд╛, рдкреВрд░реНрд╡-рдирд┐рд░реНрдорд┐рдд Ngen рдЫрд╡рд┐рдпреЛрдВ рдХреЛ рд╣рдЯрд╛ рджрд┐рдпрд╛, рдФрд░ рджреЛ рдореБрджреНрджреЛрдВ рдореЗрдВ рд╕рдордп рдФрд░ рдкреНрд░реЛрд╕реЗрд╕рд░ рд▓реЛрдб рдХреА рддреБрд▓рдирд╛ рдХреА:


рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ .NET рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓реЛрдбрд┐рдВрдЧ рд╕рдордп рдХреЛ рдХрдо рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдХрд╛рдлреА рд╕рд░рд▓ рдФрд░ рдкреНрд░рднрд╛рд╡реА рддрд░реАрдХрд╛ рд╣реИ рдЬреЛ Ngen рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред

.NET 4.5 рдореЗрдВ рдкреНрд░рджрд░реНрд╢рди рд╕реБрдзрд╛рд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА MSDN рдкрд░ рдПрдХ рд▓реЗрдЦ рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реИ:
msdn.microsoft.com/en-us/magazine/hh882452.aspx

Source: https://habr.com/ru/post/In163725/


All Articles