Runtime: рдПрдХ рд╕реНрддрд░реАрдп JIT . рдХрд╛ рдкрд░рд┐рдЪрдп рджреЗрдВ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 14 рдЕрдкреНрд░реИрд▓ 2016  ┬╖  63рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: dotnet/runtime

.NET JIT рдЯрд┐рдпрд░ рдХреНрдпреЛрдВ рдирд╣реАрдВ рд╣реИ?

JIT рдХреЗ рджреЛ рдкреНрд░рд╛рдердорд┐рдХ рдбрд┐рдЬрд╝рд╛рдЗрди рд▓рдХреНрд╖реНрдп рд╣реИрдВ: рддреЗрдЬрд╝ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рд╕рдордп рдФрд░ рдЙрдЪреНрдЪ рд╕реНрдерд┐рд░-рд░рд╛рдЬреНрдп рдереНрд░реВрдкреБрдЯред

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдпреЗ рд▓рдХреНрд╖реНрдп рдмрд╛рдзрд╛рдУрдВ рдкрд░ рджрд┐рдЦрд╛рдИ рджреЗрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рджреЛ рд╕реНрддрд░реАрдп рдЬреЗрдЖрдИрдЯреА рдбрд┐рдЬрд╛рдЗрди рдХреЗ рд╕рд╛рде рд╡реЗ рджреЛрдиреЛрдВ рдкреНрд░рд╛рдкреНрдп рд╣реИрдВ:

  1. рд╕рднреА рдХреЛрдб рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рд╢реБрд░реВ рд╣реЛрддреА рд╣реИред рдЗрд╕рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдмрд╣реБрдд рддреЗрдЬ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рд╕рдордп (рд░рдпреБрдЬрд┐рдд рд╕реЗ рддреЗрдЬ) рдореЗрдВ рд╣реЛрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг: Main рд╡рд┐рдзрд┐ рд▓рдЧрднрдЧ рд╣рдореЗрд╢рд╛ рдардВрдбреА рд╣реЛрддреА рд╣реИ рдФрд░ рдЗрд╕реЗ рдЭрдХрдЭреЛрд░рдирд╛ рд╕рдордп рдХреА рдмрд░реНрдмрд╛рджреА рд╣реИред
  2. рдХреЛрдб рдЬреЛ рдЕрдХреНрд╕рд░ рдЪрд▓рддрд╛ рд╣реИ, рдПрдХ рдмрд╣реБрдд рд╣реА рдЙрдЪреНрдЪ рдЧреБрдгрд╡рддреНрддрд╛ рд╡рд╛рд▓реЗ рдХреЛрдб рдЬрдирд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдШрдмрд░рд╛ рдЬрд╛рддрд╛ рд╣реИред рдмрд╣реБрдд рдХрдо рддрд░реАрдХреЗ рдЧрд░реНрдо рд╣реЛрдВрдЧреЗ (1%?) рдЗрд╕рд▓рд┐рдП, рдЙрдЪреНрдЪ рдЧреБрдгрд╡рддреНрддрд╛ рд╡рд╛рд▓реЗ JIT рдХрд╛ рдереНрд░реВрдкреБрдЯ рдЬреНрдпрд╛рджрд╛ рдорд╛рдпрдиреЗ рдирд╣реАрдВ рд░рдЦрддрд╛ред рдпрд╣ рдЙрддрдирд╛ рд╣реА рд╕рдордп рд╡реНрдпрддреАрдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдЬрд┐рддрдирд╛ рдПрдХ C рдХрдВрдкрд╛рдЗрд▓рд░ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдХреЛрдб рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдореЗрдВ рдЦрд░реНрдЪ рдХрд░рддрд╛ рд╣реИред рд╕рд╛рде рд╣реА, рдпрд╣ _assume_ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдХреЛрдб рдЧрд░реНрдо рд╣реИред рдпрд╣ рдкрд╛рдЧрд▓реЛрдВ рдХреА рддрд░рд╣ рдЗрдирд▓рд╛рдЗрди рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рд▓реВрдк рдХреЛ рдЕрдирд▓реЙрдХ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдХреЛрдб рдЖрдХрд╛рд░ рдЪрд┐рдВрддрд╛ рдХрд╛ рд╡рд┐рд╖рдп рдирд╣реАрдВ рд╣реИред

рдЗрд╕ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рддрдХ рдкрд╣реБрдВрдЪрдирд╛ рдмрд╣реБрдд рдорд╣рдВрдЧрд╛ рдирд╣реАрдВ рд▓рдЧрддрд╛:

  1. JIT рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рджреБрднрд╛рд╖рд┐рдпрд╛ рд▓рд┐рдЦрдирд╛ рд╕рд╕реНрддрд╛ рд▓рдЧрддрд╛ рд╣реИред
  2. рдПрдХ рдЙрдЪреНрдЪ рдЧреБрдгрд╡рддреНрддрд╛ рд╡рд╛рд▓рд╛ рдХреЛрдб рдЬрдирд░реЗрдЯрд░ рдмрдирд╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣ VC, рдпрд╛ LLILC рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
  3. рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд┐рдП рдЧрдП рд░рдирд┐рдВрдЧ рдХреЛрдб рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХреЛрдб рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣ рд╕рдВрднрд╡ рд╣реИ; рдЬреЗрд╡реАрдПрдо рдХрд░рддрд╛ рд╣реИред рдЗрд╕реЗ рд╕реНрдЯреИрдХ рд░рд┐рдкреНрд▓реЗрд╕рдореЗрдВрдЯ (OSR) рдкрд░ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред

рдХреНрдпрд╛ рдЬреЗрдЖрдИрдЯреА рдЯреАрдо рдЗрд╕ рд╡рд┐рдЪрд╛рд░ рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░ рд░рд╣реА рд╣реИ?

.NET рдХрд░реЛрдбрд╝реЛрдВ рд╕рд░реНрд╡рд░реЛрдВ рдкрд░ рдЪрд▓рддрд╛ рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЯреЗрдмрд▓ рдкрд░ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдкреНрд░рджрд░реНрд╢рди рдмрдЪрд╛ рд╣реБрдЖ рд╣реИ рдФрд░ рдЙрдк-рдЕрдкрдирд╛рдиреЗ рд╡рд╛рд▓реЗ рдХреЛрдб рдЬреАрди рдХреЗ рдХрд╛рд░рдг рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЗ рд▓рд┐рдП рд▓рд╛рдЦреЛрдВ рд╕рд░реНрд╡рд░ рдмрд░реНрдмрд╛рдж рд╣реЛ рдЧрдП рд╣реИрдВред

рд╢реНрд░реЗрдгреА:рдереНрд░реВрдкреБрдЯ
рд╡рд┐рд╖рдп: рдмрдбрд╝реЗ рджрд╛рдВрд╡
рдХреМрд╢рд▓- рд╕реНрддрд░: рд╡рд┐рд╢реЗрд╖рдЬреНрдЮ
рд▓рд╛рдЧрдд:рдЕрддрд┐рд░рд┐рдХреНрдд-рдмрдбрд╝рд╛

area-CodeGen-coreclr enhancement optimization tenet-performance

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рд╣рд╛рд▓ рдХреЗ рдкреАрдЖрд░ (https://github.com/dotnet/coreclr/pull/17840, https://github.com/dotnet/sdk/pull/2201) рдХреЗ рд╕рд╛рде рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рд░рдирдЯрд╛рдЗрдо рдХреЙрдиреНрдлрд┐рдЧ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реНрддрд░реАрдп рд╕рдВрдХрд▓рди рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рднреА рд╣реИред рдЬреЗрд╕рди рдкреНрд░реЙрдкрд░реНрдЯреА рдпрд╛ рдПрдордПрд╕рдмрд┐рд▓реНрдб рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкреНрд░реЙрдкрд░реНрдЯреАред рдЗрд╕ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдмрд╣реБрдд рд╣рд╛рд▓ рдХреЗ рдирд┐рд░реНрдорд╛рдгреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА рдЬрдмрдХрд┐ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдХреБрдЫ рд╕рдордп рдХреЗ рд▓рд┐рдП рдЖрд╕рдкрд╛рд╕ рд░рд╣рд╛ рд╣реИред

рд╕рднреА 63 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдмрд╛рддрдЪреАрдд рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛рдиреЗ рдореЗрдВ @GSPP Tiering рдПрдХ рдирд┐рд░рдВрддрд░ рд╡рд┐рд╖рдп рд╣реИред рдореЗрд░реА рдзрд╛рд░рдгрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ _рдХрдм_ рдХреА рдмрд╛рдд рд╣реИ, рди рдХрд┐ _if_ рдХреА, рдЕрдЧрд░ рдЗрд╕рд╕реЗ рдХреЛрдИ рд╕рд╛рдВрддреНрд╡рдирд╛ рдорд┐рд▓рддреА рд╣реИред рдЬрд╣рд╛рдВ рддрдХ тАЛтАЛ_why_ рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реИ рдХреНрдпреЛрдВрдХрд┐, рдРрддрд┐рд╣рд╛рд╕рд┐рдХ рд░реВрдк рд╕реЗ, рдХрдерд┐рдд рд╕рдВрднрд╛рд╡рд┐рдд рд▓рд╛рдн рдиреЗ рдХрдИ рдХреЛрдбрдЬреЗрди рдореЛрдб рдХреА рдмрдврд╝реА рд╣реБрдИ рдЬрдЯрд┐рд▓рддрд╛ рдФрд░ рдЬреЛрдЦрд┐рдо рдХреЛ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рд╡рд┐рдХрд╛рд╕ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рдЙрдЪрд┐рдд рдирд╣реАрдВ рдард╣рд░рд╛рдпрд╛ред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдореБрдЭреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╡рд┐рд╢реЗрд╖рдЬреНрдЮреЛрдВ рдХреЛ рдЗрд╕ рдкрд░ рдмреЛрд▓рдиреЗ рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЙрдиреНрд╣реЗрдВ рдЬреЛрдбрд╝ рджреВрдВрдЧрд╛ред

/cc @dotnet/jit-contrib @russellhadley

рдХрд┐рд╕реА рддрд░рд╣ рдореБрдЭреЗ рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ рдпрд╣ рдЕрднреА рднреА рдХреНрд░реЙрд╕рдЬреЗрди/рдПрдирдЬреАрдПрди, рд░реЗрдбреА рдЯреВ рд░рди рдФрд░ рдХреЛрд░рд░реНрдЯ рдХреА рджреБрдирд┐рдпрд╛ рдореЗрдВ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╣реИред

рдЗрдирдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА рдЕрднреА рдЙрдЪреНрдЪ рд╕реНрдерд┐рд░ рд╕реНрдЯреЗрдЯ рдереНрд░реВрдкреБрдЯ рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдХрд┐ рдЕрдзрд┐рдХрд╛рдВрд╢ рд╡реЗрдм рдРрдкреНрд╕ рдХреЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред рдЕрдЧрд░ рд╡реЗ рдХрднреА рдРрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдореИрдВ рдЗрд╕рд╕реЗ рдЦреБрд╢ рд╣реВрдВ рдХреНрдпреЛрдВрдХрд┐ рдореБрдЭреЗ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рд╕рдордп рдХреА рдкрд░рд╡рд╛рд╣ рдирд╣реАрдВ рд╣реИред

рд▓реЗрдХрд┐рди рдЕрднреА рддрдХ .NET рдХреЗ рд▓рд┐рдП рд╕рднреА рдХреЛрдб рдЬреЗрдирд░реЗрдЯрд░ рдиреЗ рджреЛ рд▓рдХреНрд╖реНрдпреЛрдВ рдХреЗ рдмреАрдЪ рдПрдХ рдЕрд╕рдВрднрд╡ рд╕рдВрддреБрд▓рди рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рд╣реИ, рдЬреЛ рди рддреЛ рдмрд╣реБрдд рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдкреВрд░рд╛ рдХрд░ рд░рд╣рд╛ рд╣реИред рдЖрдЗрдП рдЙрд╕ рд╕рдВрддреБрд▓рдирдХрд╛рд░реА рдХрд╛рд░реНрдп рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛рдПрдВ рддрд╛рдХрд┐ рд╣рдо рдЕрдиреБрдХреВрд▓рди рдХреЛ 11 рдореЗрдВ рдмрджрд▓ рд╕рдХреЗрдВред

рд▓реЗрдХрд┐рди рдЕрднреА рддрдХ .NET рдХреЗ рд▓рд┐рдП рд╕рднреА рдХреЛрдб рдЬреЗрдирд░реЗрдЯрд░ рдиреЗ рджреЛ рд▓рдХреНрд╖реНрдпреЛрдВ рдХреЗ рдмреАрдЪ рдПрдХ рдЕрд╕рдВрднрд╡ рд╕рдВрддреБрд▓рди рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рд╣реИ, рдЬреЛ рди рддреЛ рдмрд╣реБрдд рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдкреВрд░рд╛ рдХрд░ рд░рд╣рд╛ рд╣реИред рдЖрдЗрдП рдЙрд╕ рд╕рдВрддреБрд▓рдирдХрд╛рд░реА рдХрд╛рд░реНрдп рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛рдПрдВ рддрд╛рдХрд┐ рд╣рдо рдЕрдиреБрдХреВрд▓рди рдХреЛ 11 рдореЗрдВ рдмрджрд▓ рд╕рдХреЗрдВред

рдореИрдВ рд╕рд╣рдордд рд╣реВрдВ рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рджреБрднрд╛рд╖рд┐рдпрд╛ рдЬреИрд╕реА рдЪреАрдЬреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдмрд╕ рдПрдХ рдЕрдЪреНрдЫрд╛ рдХреНрд░реЙрд╕рдЬреЗрди рдХрдВрдкрд╛рдЗрд▓рд░, рдпрд╣ рдПрдХ рдмреЗрд╣рддрд░ RyuJIT рдпрд╛ LLILC рд╣реЛред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕рдмрд╕реЗ рдмрдбрд╝рд╛ рдлрд╛рдпрджрд╛ рдЙрди рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рд╣реИ рдЬрд┐рдиреНрд╣реЗрдВ рд░рдирдЯрд╛рдЗрдо рдкрд░ рдХреЛрдб рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдЗрдирдореЗрдВ рдЧрддрд┐рд╢реАрд▓ рднрд╛рд╖рд╛рдПрдВ рдФрд░ рд╕рд░реНрд╡рд░ рдХрдВрдЯреЗрдирд░ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред

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

рд╡реЗрдм рдРрдкреНрд╕ рдХреЛ рдХрд┐рд╕реА рдПрдирдЬреАрдПрди-рд╕реНрдЯрд╛рдЗрд▓ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред рдпрд╣ рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдореЗрдВ рдЕрдЪреНрдЫреА рддрд░рд╣ рдлрд┐рдЯ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рдмрдбрд╝реА рдмрд╛рдЗрдирд░реА рдХреЛ ngen рдХрд░рдиреЗ рдореЗрдВ рдмрд╣реБрдд рд╕рдордп рд▓рдЧрддрд╛ рд╣реИ (рднрд▓реЗ рд╣реА рд▓рдЧрднрдЧ рд╕рднреА рдХреЛрдб рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рдореГрдд рдпрд╛ рдардВрдбреЗ рд╣реЛрдВ)ред

рд╕рд╛рде рд╣реА, рд╡реЗрдм рдРрдк рдХреЛ рдбрд┐рдмрдЧ рдФрд░ рдкрд░реАрдХреНрд╖рдг рдХрд░рддреЗ рд╕рдордп рдЖрдк рдпрдерд╛рд░реНрдерд╡рд╛рджреА рдкреНрд░рджрд░реНрд╢рди рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдирдЬреАрдПрди рдкрд░ рднрд░реЛрд╕рд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

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

Tiering рд╣рд░ рдкрд░рд┐рджреГрд╢реНрдп рдореЗрдВ рд╣рдореЗрд╢рд╛ рдХреЗ рд▓рд┐рдП рд╕рдм рдХреБрдЫ рд╣рд▓ рдХрд░ рджреЗрддрд╛ рд╣реИред рд▓рдЧрднрдЧ рдмреЛрд▓рдирд╛ :) рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╣рдореЗрдВ JITs рдХреЗ рд╡рд╛рджреЗ рдкрд░ рд▓реЗ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ: рдкреНрд░рджрд░реНрд╢рди _beyond_ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ рдЬреЛ рдПрдХ C рдХрдВрдкрд╛рдЗрд▓рд░ рдХрд░ рд╕рдХрддрд╛ рд╣реИред

RyuJIT рдХрд╛ рд╡рд░реНрддрдорд╛рди рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЬреИрд╕рд╛ рдХрд┐ рдЕрдм рд╣реИ, рдЯрд┐рдпрд░ 1 рдХреЗ рд▓рд┐рдП рдХрд╛рдлреА рдЕрдЪреНрдЫрд╛ рд╣реИ... рд╕рд╡рд╛рд▓ рдпрд╣ рд╣реИ: рдХреНрдпрд╛ рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рдж рдЪрд▓рдиреЗ рд╡рд╛рд▓реЗ рдЧрд░реНрдо рдкрдереЛрдВ рдХреЗ рд▓рд┐рдП рдЯрд┐рдпрд░ 2 рдЪрд░рдо рдЕрдиреБрдХреВрд▓рди JIT рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рд╣реЛрдЧрд╛? рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдЬрдм рд╣рдореЗрдВ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдпрд╛ рдпрд╣ рдЬрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд░рдирдЯрд╛рдЗрдо рдЬрд╛рдирдХрд╛рд░реА рд╣реИ рдХрд┐ рдХреБрдЫ рдЧрд░реНрдо рд╣реИ рдпрд╛ рдЬрдм рд╢реБрд░реВ рд╕реЗ рд╣реА рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред

RyuJIT рд╕реНрддрд░ 1 рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рдлреА рдЕрдЪреНрдЫрд╛ рд╣реИред рдЗрд╕рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдПрдХ рджреБрднрд╛рд╖рд┐рдпрд╛ рдХреЗ рдкрд╛рд╕ _far_ рддреЗрдЬ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рд╕рдордп рд╣реЛрдЧрд╛ (рдореЗрд░реЗ рдЕрдиреБрдорд╛рди рдореЗрдВ)ред рджреВрд╕рд░реА рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЯрд┐рдпрд░ 2 рдХреЛ рдЖрдЧреЗ рдмрдврд╝рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЯрд┐рдпрд░ 1 рдХреЛрдб рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреА рд╕реНрдерд╛рдиреАрдп рд╕реНрдерд┐рддрд┐ рдХреЛ рдирдП рдЯрд┐рдпрд░ 2 рдХреЛрдб (OSR) рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕рдХреЗ рд▓рд┐рдП RyuJIT рдкрд░рд┐рд╡рд░реНрддрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдПрдХ рджреБрднрд╛рд╖рд┐рдпрд╛ рдЬреЛрдбрд╝рдирд╛, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ, рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдмреЗрд╣рддрд░ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рд╡рд┐рд▓рдВрдмрддрд╛ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рд╕реНрддрд╛ рд░рд╛рд╕реНрддрд╛ рд╣реЛрдЧрд╛ред

рдЗрд╕рд╕реЗ рднреА рд╕рд╕реНрддрд╛ рд╡рд┐рдХрд▓реНрдк рдпрд╣ рд╣реЛрдЧрд╛ рдХрд┐ рд░рдирд┐рдВрдЧ рдХреЛрдб рдХреЛ рдЯрд┐рдпрд░ 2 рдХреЛрдб рд╕реЗ рд░рд┐рдкреНрд▓реЗрд╕ рди рдХрд┐рдпрд╛ рдЬрд╛рдПред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рдЯрд┐рдпрд░ 1 рдХреЛрдб рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ рд╡рд╛рдкрд╕ рдЖрдиреЗ рддрдХ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВред рдпрд╣ рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ рдпрджрд┐ рдХреЛрдб рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдЪрд▓рдиреЗ рд╡рд╛рд▓реЗ рд╣реЙрдЯ рд▓реВрдк рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдЙрд╕ рддрд░рд╣ рд╕реЗ рдЯрд┐рдпрд░ 2 рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдкрд░ рдХрднреА рдирд╣реАрдВ рдкрд╣реБрдВрдЪреЗрдЧрд╛ред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдмрд╣реБрдд рдмреБрд░рд╛ рдирд╣реАрдВ рд╣реЛрдЧрд╛ рдФрд░ рдЗрд╕реЗ v1 рд░рдгрдиреАрддрд┐ рдХреЗ рд░реВрдк рдореЗрдВ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдХрдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╡рд┐рдЪрд╛рд░ рдЙрдкрд▓рдмреНрдз рд╣реИрдВ рдЬреИрд╕реЗ рдХрд┐ рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЛ рдЧрд░реНрдо рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рдирд╛ (рдпрд╣ рд╡рд░реНрддрдорд╛рди рдЬреЗрдЖрдИрдЯреА рд░рдгрдиреАрддрд┐ рдХреЗ рд╕рд╛рде рднреА рдореМрдЬреВрдж рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП)ред

@GSPP рдпрд╣ рд╕рдЪ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЖрдк рдЗрд╕реЗ рдЕрдЧрд▓реЗ рднрд╛рдЧ рдореЗрдВ рдирд╣реАрдВ рдЬрд╛рди рдкрд╛рдПрдВрдЧреЗред рдпрджрд┐ рдЬрд┐рдЯреЗрдб рдХреЛрдб рдФрд░ рдЗрдВрд╕реНрдЯреНрд░реВрдореЗрдВрдЯреЗрд╢рди рд▓рдЧрд╛рддрд╛рд░ рдмрдирд╛ рд░рд╣рддрд╛ рд╣реИ, рддреЛ рджреВрд╕рд░рд╛ рдирд┐рд╖реНрдкрд╛рджрди рдЖрдкрдХреЛ рдЕрднреА рднреА рдЯрд┐рдпрд░ 2 рдХреЛрдб (рдХреБрдЫ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рд╕рдордп рдХреА рдХреАрдордд рдкрд░) рдорд┐рд▓реЗрдЧрд╛ --- рдЬреЛ рдПрдХ рдмрд╛рд░ рдХреЗ рд▓рд┐рдП рдореБрдЭреЗ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдкрд░рд╡рд╛рд╣ рдирд╣реАрдВ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдЬреНрдпрд╛рджрд╛рддрд░ рд╕рд░реНрд╡рд░ рдХреЛрдб рд▓рд┐рдЦрддрд╛ рд╣реВрдВред

JIT рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рджреБрднрд╛рд╖рд┐рдпрд╛ рд▓рд┐рдЦрдирд╛ рд╕рд╕реНрддрд╛ рд▓рдЧрддрд╛ рд╣реИред

рдПрдХ рдирдпрд╛ рджреБрднрд╛рд╖рд┐рдпрд╛ рд▓рд┐рдЦрдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдХреНрдпрд╛ рдЕрдХреНрд╖рдо рдЕрдиреБрдХреВрд▓рди рдХреЗ рд╕рд╛рде RyuJIT рдХреЛ рдЪрд▓рд╛рдиреЗ рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рд╣реЛ рд╕рдХрддрд╛ рд╣реИ? рдХреНрдпрд╛ рдЗрд╕рд╕реЗ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рд╕рдордп рдореЗрдВ рдХрд╛рдлреА рд╕реБрдзрд╛рд░ рд╣реЛрдЧрд╛?

рдПрдХ рдЙрдЪреНрдЪ рдЧреБрдгрд╡рддреНрддрд╛ рд╡рд╛рд▓рд╛ рдХреЛрдб рдЬрдирд░реЗрдЯрд░ рдмрдирд╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рд╡реАрд╕реА

рдХреНрдпрд╛ рдЖрдк рд╕реА 2, рд╡рд┐рдЬреБрдЕрд▓ рд╕реА ++ рдмреИрдХрдПрдВрдб рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ? рдпрд╣ рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдирд╣реАрдВ рд╣реИ рдФрд░ рдУрдкрди рд╕реЛрд░реНрд╕ рдирд╣реАрдВ рд╣реИред рдореБрдЭреЗ рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ рджреЛрдиреЛрдВ рдХреЛ рдареАрдХ рдХрд░рдирд╛ рдЬрд▓реНрдж рд╣реА рдХрднреА рднреА рд╣реЛрдЧрд╛ред

рдЕрдиреБрдХреВрд▓рди рдЕрдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ред рд╣рд╛рд▓рд╛рдБрдХрд┐ OSR рд╕рдорд╕реНрдпрд╛ рдмрдиреА рд╣реБрдИ рд╣реИред рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХреЛрдб рдЙрддреНрдкрдиреНрди рдХрд░рдирд╛ рдХрд┐рддрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ рдЬреЛ рд░рдирдЯрд╛рдЗрдо рдХреЛ рдПрдХ рд╕реБрд░рдХреНрд╖рд┐рдд рдмрд┐рдВрджреБ рдкрд░ рд░рдирдЯрд╛рдЗрдо рдкрд░ рдЖрдИрдПрд▓ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░рд▓ рд╕реНрдЯреЗрдЯ (рд╕реНрдерд╛рдиреАрдп рдФрд░ рд╕реНрдЯреИрдХ) рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЗрд╕реЗ рдЯрд┐рдпрд░ 2 рдЬрд┐рдЯреЗрдб рдХреЛрдб рдореЗрдВ рдХреЙрдкреА рдХрд░реЗрдВ рдФрд░ рдЯрд┐рдпрд░ 2 рдирд┐рд╖реНрдкрд╛рджрди рдордзреНрдп-рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд░реЗрдВред JVM рдпрд╣ рдХрд░рддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдХреМрди рдЬрд╛рдирддрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдореЗрдВ рдХрд┐рддрдирд╛ рд╕рдордп рд▓рдЧрд╛ред

рд╣рд╛рдБ, рдореИрдВ C2 рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣рд╛ рдерд╛ред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореБрдЭреЗ рдпрд╛рдж рд╣реИ рдХрд┐ рдХрдо рд╕реЗ рдХрдо рдПрдХ рдбреЗрд╕реНрдХрдЯреЙрдк JITs C2 рдХреЛрдб рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИред рд╢рд╛рдпрдж CoreCLR рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рд╢рд╛рдпрдж рдбреЗрд╕реНрдХрдЯреЙрдк рдХреЗ рд▓рд┐рдПред рдореБрдЭреЗ рдпрдХреАрди рд╣реИ рдХрд┐ рдорд╛рдЗрдХреНрд░реЛрд╕реЙрдлреНрдЯ рдХреЛ рдХреЛрдб рдмреЗрд╕ рдЧрдардмрдВрдзрди рдХрд░рдиреЗ рдореЗрдВ рджрд┐рд▓рдЪрд╕реНрдкреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╢рд╛рдпрдж рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмрд╛рд╣рд░ рд╣реИред LLVM рдПрдХ рдмрдврд╝рд┐рдпрд╛ рд╡рд┐рдХрд▓реНрдк рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИред рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛтАЛтАЛрд╣реИ рдХрд┐ рдХрдИ рднрд╛рд╖рд╛рдПрдВ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдПрд▓рдПрд▓рд╡реАрдПрдо рдХреЛ рдЬреАрд╕реА рдХреЗ рд╕рд╛рде рдФрд░ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдкреНрд░рдмрдВрдзрд┐рдд рд░рдирдЯрд╛рдЗрдо рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреА рд╣реИрдВред

LLVM рдПрдХ рдмрдврд╝рд┐рдпрд╛ рд╡рд┐рдХрд▓реНрдк рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИред рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛтАЛтАЛрд╣реИ рдХрд┐ рдХрдИ рднрд╛рд╖рд╛рдПрдВ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдПрд▓рдПрд▓рд╡реАрдПрдо рдХреЛ рдЬреАрд╕реА рдХреЗ рд╕рд╛рде рдФрд░ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдкреНрд░рдмрдВрдзрд┐рдд рд░рдирдЯрд╛рдЗрдо рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреА рд╣реИрдВред

рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рд▓реЗрдЦ: Apple рдиреЗ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдЕрдкрдиреЗ JavaScript JIT рдХреЗ рдЕрдВрддрд┐рдо рд╕реНрддрд░ рдХреЛ LLVM рд╕реЗ рджреВрд░ рд▓реЗ рдЬрд╛рдпрд╛ рд╣реИ: https://webkit.org/blog/5852/introducing-the-b3-jit-compiler/ ред рд╣рдо рдЙрдирдХреЗ рд╕рд╛рдордиреЗ рдЖрдиреЗ рд╡рд╛рд▓реА рд╕рдорд╛рди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: рдзреАрдореА рд╕рдВрдХрд▓рди рд╕рдордп рдФрд░ рдПрд▓рдПрд▓рд╡реАрдПрдо рдХреА рд╕реНрд░реЛрдд рднрд╛рд╖рд╛ рдХреЗ рдЬреНрдЮрд╛рди рдХреА рдХрдореАред

RyuJIT рдХреА рддреБрд▓рдирд╛ рдореЗрдВ 10x рдзреАрдореА рдЧрддрд┐ рджреВрд╕рд░реЗ рд╕реНрддрд░ рдХреЗ рд▓рд┐рдП рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕реНрд╡реАрдХрд╛рд░реНрдп рд╣реЛрдЧреАред

рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рд╕реНрд░реЛрдд рднрд╛рд╖рд╛ (рдЬреЛ рдПрдХ рд╕рдЪреНрдЪреА рдЪрд┐рдВрддрд╛ рд╣реИ) рдХреЗ рдЬреНрдЮрд╛рди рдХреА рдХрдореА рдПрд▓рдПрд▓рд╡реАрдПрдо рдХреА рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдореЗрдВ рдирд┐рд╣рд┐рдд рд╣реИред рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛтАЛтАЛрд╣реИ рдХрд┐ рдХрдИ рдЯреАрдореЗрдВ рдПрд▓рдПрд▓рд╡реАрдПрдо рдХреЛ рдПрдХ рдРрд╕реЗ рд░рд╛рдЬреНрдп рдореЗрдВ рд▓реЗ рдЬрд╛рдиреЗ рдореЗрдВ рд╡реНрдпрд╕реНрдд рд╣реИрдВ, рдЬрд╣рд╛рдВ рд╕реНрд░реЛрдд рднрд╛рд╖рд╛ рдХреЗ рдЬреНрдЮрд╛рди рдХрд╛ рдЕрдзрд┐рдХ рдЖрд╕рд╛рдиреА рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред _All_ рдЧреИрд░-рд╕реА рдЙрдЪреНрдЪ-рд╕реНрддрд░реАрдп рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ LLVM рдкрд░ рд╕рдВрдХрд▓рди рдХрд░рддреЗ рд╕рдордп рдпрд╣ рд╕рдорд╕реНрдпрд╛ рд╣реЛрддреА рд╣реИред

WebKIT FTL/B3 рдкреНрд░реЛрдЬреЗрдХреНрдЯ .NET рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рд╕рдлрд▓ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрдард┐рди рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдХреЛрдб рдЪрд▓рд╛рддреЗ рд╕рдордп рдЙрдиреНрд╣реЗрдВ рдЙрддреНрдХреГрд╖реНрдЯ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ _in Total_ рдХреБрдЫ рд╕реМ рдорд┐рд▓реАрд╕реЗрдХрдВрдб рдХрд╛ рд╕рдордп рд▓реЗрддрд╛ рд╣реИ рдФрд░ рдлрд┐рд░ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рддрд╛ рд╣реИред рдпрд╣ рд╡реЗрдм рдкреЗрдЬреЛрдВ рдХреЛ рдЪрд▓рд╛рдиреЗ рд╡рд╛рд▓реЗ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╡рд░реНрдХрд▓реЛрдб рдХреА рдкреНрд░рдХреГрддрд┐ рд╣реИред .NET рдЙрд╕ рд╕реНрдерд╛рди рдкрд░ рдирд╣реАрдВ рд╣реИред

@GSPP рдореБрдЭреЗ рдпрдХреАрди рд╣реИ рдХрд┐ рдЖрдк рд╢рд╛рдпрдж LLILC рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирддреЗ рд╣реЛрдВрдЧреЗред рдЕрдЧрд░ рдирд╣реАрдВ рддреЛ рджреЗрдЦ рд▓реАрдЬрд┐рдПред

рд╣рдо рдХреБрдЫ рд╕рдордп рд╕реЗ рд╕реАрдПрд▓рдЖрд░ рдЕрд╡рдзрд╛рд░рдгрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдПрд▓рдПрд▓рд╡реАрдПрдо рд╕рдорд░реНрдерди рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рд╣рдордиреЗ рдИрдПрдЪ рдФрд░ рдЬреАрд╕реА рджреЛрдиреЛрдВ рд╕реБрдзрд╛рд░реЛрдВ рдореЗрдВ рдирд┐рд╡реЗрд╢ рдХрд┐рдпрд╛ рд╣реИред рджреЛрдиреЛрдВ рдкрд░ рдЕрднреА рдХрд╛рдлреА рдХреБрдЫ рдХрд░рдирд╛ рдмрд╛рдХреА рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХреБрдЫ рдЕрдЬреНрдЮрд╛рдд рдорд╛рддреНрд░рд╛ рдореЗрдВ рдХрд╛рдо рдЬреАрд╕реА рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдореЗрдВ рдареАрдХ рд╕реЗ рдХрд╛рдо рдХрд░ рд░рд╣реЗ рдЕрдиреБрдХреВрд▓рди рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВред

рдПрд▓рдПрд▓рдЖрдИрдПрд▓рд╕реА рд░реБрдХрд╛ рд╣реБрдЖ рд▓рдЧрддрд╛ рд╣реИред рдпрд╣ рд╣реИ?
18 рдЕрдкреНрд░реИрд▓ 2016 рдХреЛ рд╢рд╛рдо 7:32 рдмрдЬреЗ, "рдПрдВрдбреА рдПрдпрд░реНрд╕" рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди @github.com рдиреЗ рд▓рд┐рдЦрд╛:

@GSPP https://github.com/GSPP рдореБрдЭреЗ рдпрдХреАрди рд╣реИ рдХрд┐ рдЖрдк рд╢рд╛рдпрдж LLILC рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирддреЗ рд╣реЛрдВрдЧреЗ
https://github.com/dotnet/llilcред рдЕрдЧрд░ рдирд╣реАрдВ рддреЛ рджреЗрдЦ рд▓реАрдЬрд┐рдПред

рд╣рдо рдХреБрдЫ рд╕рдордп рд╕реЗ рд╕реАрдПрд▓рдЖрд░ рдЕрд╡рдзрд╛рд░рдгрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдПрд▓рдПрд▓рд╡реАрдПрдо рд╕рдорд░реНрдерди рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╣реИ
рдИрдПрдЪ рдФрд░ рдЬреАрд╕реА рд╕реБрдзрд╛рд░ рджреЛрдиреЛрдВ рдореЗрдВ рдирд┐рд╡реЗрд╢ рдХрд┐рдпрд╛ред рдЕрднреА рдХрд╛рдлреА рдХреБрдЫ рдХрд░рдирд╛ рдмрд╛рдХреА рд╣реИ
рджреЛрдиреЛрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХреБрдЫ рдЕрдЬреНрдЮрд╛рдд рдорд╛рддреНрд░рд╛ рдореЗрдВ рдХрд╛рд░реНрдп рдЕрдиреБрдХреВрд▓рди рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ
рдЬреАрд╕реА рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдореЗрдВ рдареАрдХ рд╕реЗ рдХрд╛рдо рдХрд░рдирд╛ред

-
рдЖрдк рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдиреЗ рдЯрд┐рдкреНрдкрдгреА рдХреА рдереАред
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рд╕реАрдзреЗ рдЙрддреНрддрд░ рджреЗрдВ рдпрд╛ рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ
https://github.com/dotnet/coreclr/issues/4331#issuecomment -211630483

@drbo - LLILC рдЗрд╕ рд╕рдордп рдмреИрдХ рдмрд░реНрдирд░ рдкрд░ рд╣реИ - MS рдЯреАрдо RyuJIT рдореЗрдВ рд▓рд╛рдП рдЧрдП рдЕрдзрд┐рдХ рд▓рдХреНрд╖реНрдп рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде-рд╕рд╛рде рдЙрди рдореБрджреНрджреЛрдВ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░ рд░рд╣реА рд╣реИ рдЬреЛ CoreCLR рдбреНрд░рд╛рдЗрд╡ рдХреЗ рд░реВрдк рдореЗрдВ рд░рд┐рд▓реАрдЬрд╝ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрддреЗ рд╣реИрдВ рдФрд░ рдпрд╣ рд╣рдорд╛рд░реЗ рдкреВрд░реЗ рд╕рдордп рдореЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд▓рдЧрддрд╛ рд╣реИред рдпрд╣ рдореЗрд░реА TODO рд╕реВрдЪреА (рдореЗрд░реЗ рдкреНрд░рдЪреБрд░ рдЦрд╛рд▓реА рд╕рдордп рдореЗрдВ) рдкрд░ рд╣реИ рдХрд┐ рд╣рдо LLILC рдХреЗ рд╕рд╛рде рдХрд┐рддрдиреА рджреВрд░ (рд╡рд░реНрддрдорд╛рди рдореЗрдВ) рдкреНрд░рд╛рдкреНрдд рд╣реБрдП рд╣реИрдВ, рдЗрд╕рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдПрдХ рд╕реАрдЦреА рдЧрдИ рдкреЛрд╕реНрдЯ рдХреЛ рд▓рд┐рдЦрдирд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЕрднреА рддрдХ рдпрд╣ рдирд╣реАрдВ рдорд┐рд▓рд╛ рд╣реИред
рд╕реНрддрд░ рдкрд░, рдЗрд╕ рд╡рд┐рд╖рдп рдиреЗ рдкрд┐рдЫрд▓реЗ рдХреБрдЫ рд╡рд░реНрд╖реЛрдВ рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реА рдЪрд░реНрдЪрд╛рдПрдБ рдЙрддреНрдкрдиреНрди рдХреА рд╣реИрдВред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХреБрдЫ рдирдП рд╡рд░реНрдХрд▓реЛрдб рдХреЗ рд╕рд╛рде-рд╕рд╛рде рдЫрд╡рд┐рдпреЛрдВ рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рдирдП рдЕрддрд┐рд░рд┐рдХреНрдд рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рд╣рдо рдХреИрд╕реЗ рдФрд░ рдХрд╣рд╛рдБ рд╕реНрддрд░ рдкрд░ рдПрдХ рдирдпрд╛ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВрдЧреЗред

@russellhadley рдХреНрдпрд╛ рдЖрдкрдХреЗ рдкрд╛рд╕ рдкреЛрд╕реНрдЯ рд▓рд┐рдЦрдиреЗ рдХрд╛ рдЦрд╛рд▓реА рд╕рдордп рдерд╛?

рдореИрдВ рдкрд░рд┐рдХрд▓реНрдкрдирд╛ рдХрд░рддрд╛ рд╣реВрдВ, рдкреНрд░рдЪрд╛рд░рд┐рдд рд╕реНрдЯреИрдХ рд╕реНрд▓реЙрдЯ рдФрд░ gcroots рдХреЗ рдЕрдиреБрдХреВрд▓рди рдХреЛ рддреЛрдбрд╝рдиреЗ рдФрд░ рдзреАрдореА рдЧрддрд┐ рд╕реЗ рдЭрдЯрдХреЗ рдХреЗ рд╕рдордп рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП ... рдореБрдЭреЗ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдХреЛрдб рдХреЛ рдмреЗрд╣рддрд░ рдврдВрдЧ рд╕реЗ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдореБрдЭреЗ рдпрд╣ рднреА рдЖрд╢реНрдЪрд░реНрдп рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рд╕рдВрднрд╡ рдФрд░ рд▓рд╛рднрджрд╛рдпрдХ рд╣реИ рдХрд┐ рд╕реАрдзреЗ SelectionDAG рдореЗрдВ рдХреВрджреЗрдВ рдФрд░ LLVM рдмреИрдХрдПрдВрдб рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдкреНрд░рджрд░реНрд╢рди рдХрд░реЗрдВред рдХрдо рд╕реЗ рдХрдо рдХреБрдЫ рдЭрд╛рдБрдХреЗрдВ рдФрд░ рдкреНрд░рдЪрд╛рд░ рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рдПрдБ... рдпрджрд┐ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рдХреЛ gcroot рдкрджреЛрдиреНрдирддрд┐ LLILC рдореЗрдВ рд╕рдорд░реНрдерд┐рдд рд╣реИ

рдореИрдВ рд╡рд░реНрддрдорд╛рди рдмрд╛рдзрд╛рдУрдВ рд╕рд╣рд┐рдд рдПрд▓рдПрд▓рдЖрдИрдПрд▓рд╕реА рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рд▓реЗрдХрд░ рдЙрддреНрд╕реБрдХ рд╣реВрдВ рдФрд░ рдпрд╣ рд░рдпреБрдЬрд┐рдд рдХреЗ рдЦрд┐рд▓рд╛рдл рдХреИрд╕рд╛ рдкреНрд░рджрд░реНрд╢рди рдХрд░рддрд╛ рд╣реИред рдПрд▓рдПрд▓рд╡реАрдПрдо рдкреВрд░реНрдг рд╡рд┐рдХрд╕рд┐рдд "рдФрджреНрдпреЛрдЧрд┐рдХ-рд╢рдХреНрддрд┐" рд╕рдВрдХрд▓рдХ рд╣реЛрдиреЗ рдХреЗ рдХрд╛рд░рдг рдУрдПрд╕рдПрд╕ рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рдЕрдиреБрдХреВрд▓рди рдХрд╛ рдПрдХ рдмрдбрд╝рд╛ рдзрди рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдореЗрд▓рд┐рдВрдЧ рд╕реВрдЪреА рдкрд░ рдмрд┐рдЯрдХреЛрдб рдкреНрд░рд╛рд░реВрдк рдХреЗ рдЕрдзрд┐рдХ рдХреБрд╢рд▓, рддреЗрдЬ рдХреНрд░рдорд╛рдВрдХрди/рдбрд┐рд╕реЗрд░рд┐рдПрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдкрд░ рдХреБрдЫ рдмрд╛рддрдЪреАрдд рд╣реБрдИ рд╣реИ; рдореИрдВ рд╕реЛрдЪ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдПрд▓рдПрд▓рдЖрдИрдПрд▓рд╕реА рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рдЪреАрдЬ рд╣реИред

рдХреНрдпрд╛ рдЗрд╕ рдкрд░ рдФрд░ рд╡рд┐рдЪрд╛рд░ рд╣реБрдП рд╣реИрдВ? @russellhadley CoreCLR рдЬрд╛рд░реА рдХреА рдЧрдИ рд╣реИ рдФрд░ RyuJIT рдХреЛ (рдХрдо рд╕реЗ рдХрдо) 86 рдкреЛрд░реНрдЯ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ - рд░реЛрдбрдореИрдк рдкрд░ рдЖрдЧреЗ рдХреНрдпрд╛ рд╣реИ?

рдЗрд╕ рдкрд░ рдХрд╛рдо рдХреА рд╢реБрд░реБрдЖрдд рдХреЗ рд▓рд┐рдП dotnet/coreclr#10478 рджреЗрдЦреЗрдВред

рд╕рд╛рде рд╣реА рдбреЙрдЯрдиреЗрдЯ/рдХреЛрд░рдХреНрд▓рд░#12193

@noahfalk , рдХреНрдпрд╛ рдЖрдк рдХреГрдкрдпрд╛ рдкреНрд░рдмрдВрдзрд┐рдд рдХреЛрдб рд╕реЗ рддреБрд░рдВрдд рдПрдХ рд╕реНрддрд░реАрдп 2 рд╕рдВрдХрд▓рди рдХреЛ рдордЬрдмреВрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд░рдирдЯрд╛рдЗрдо рдХреЛ рдмрддрд╛рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? рдЕрдзрд┐рдХрд╛рдВрд╢ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдЯрд┐рдпрд░рдб рд╕рдВрдХрд▓рди рдПрдХ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдПрдХ рдРрд╕реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдЬрд╣рд╛рдВ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рд╕рдордп рдЕрдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╣реИ рд▓реЗрдХрд┐рди рдереНрд░реВрдкреБрдЯ рдФрд░ рд╕реНрдерд┐рд░ рд╡рд┐рд▓рдВрдмрддрд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред

рдореЗрд░реЗ рд╕рд┐рд░ рдХреЗ рдКрдкрд░ рд╕реЗ, рдпрд╣ рдпрд╛ рддреЛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ:

  • рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдПрдХ рдирдИ рд╕реЗрдЯрд┐рдВрдЧ, <gcServer enabled="true" /> рдХреА рддрд░рд╣ рдПрдХ рд╕реНрд╡рд┐рдЪ рдЬреЗрдЖрдИрдЯреА рдХреЛ рд╣рдореЗрд╢рд╛ рдЯрд┐рдпрд░ 1 рдЫреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП
  • рдпрд╛ рдРрд╕рд╛ рдХреБрдЫ RuntimeHelpers.PrepareMethod , рдЬрд┐рд╕реЗ рдХреЛрдб рджреНрд╡рд╛рд░рд╛ рдЙрди рд╕рднреА рд╡рд┐рдзрд┐рдпреЛрдВ рдкрд░ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдЬреЛ рд╣реЙрдЯ рдкрд╛рде рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рд╣реИрдВ (рд╣рдо рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдкрд░ рдЕрдкрдиреЗ рдХреЛрдб рдХреЛ рдкреНрд░реА-рдЬреЗрдЖрдИрдЯреА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░ рд░рд╣реЗ рд╣реИрдВ)ред рдЗрд╕рд╕реЗ рдбреЗрд╡рд▓рдкрд░ рдХреЛ рдЕрдзрд┐рдХ рд╕реНрд╡рддрдВрддреНрд░рддрд╛ рджреЗрдиреЗ рдХрд╛ рдлрд╛рдпрджрд╛ рд╣реЛрддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдкрддрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рд╣реЙрдЯ рдкрд╛рде рдХреНрдпрд╛ рд╣реИред рдЗрд╕ рдкрджреНрдзрддрд┐ рдХрд╛ рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдЕрдзрд┐рднрд╛рд░ рдареАрдХ рд░рд╣реЗрдЧрд╛ред

рджреА, рдХреБрдЫ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЛ рдЗрд╕рд╕реЗ рд▓рд╛рдн рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдореИрдВ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЬреЗрдЖрдИрдЯреА рд▓рдВрдШрди рдЕрдиреБрдХреВрд▓рди рд╕реЗ рдЪрд┐рдВрддрд┐рдд рд╣реВрдВ, рдФрд░ рдореИрдВ рдпрд╣ рдмрддрд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реВрдВ рдХрд┐ рдореИрдВ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдЕрдкрдиреЗ рдХреЛрдб рдХреЛ рднрд╛рд░реА рд░реВрдк рд╕реЗ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░реВрдВрдЧрд╛ред

рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдиреЗ рдбрд┐рдЬрд╝рд╛рдЗрди рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд▓рд┐рдЦрд╛ рд╣реИ:

рд╕реНрд╡-рд╕рдВрд╢реЛрдзрд┐рдд рдХреЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рдмрдВрдзрд┐рдд рдХреЛрдб API рд╕реЗ рд╕реБрд▓рдн рдирдИ рдмрд┐рд▓реНрдб рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдЪрд░рдг рдЬреЛрдбрд╝реЗрдВред

рдЬреЛ рдмрд╣реБрдд рджрд┐рд▓рдЪрд╕реНрдк рд▓рдЧрддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдкреВрд░рд╛ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЗрд╕рдореЗрдВ рдЬреЛ рдХреБрдЫ рдореИрдВ рдкреВрдЫ рд░рд╣рд╛ рд╣реВрдВ рдЙрд╕реЗ рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред


рд╕рд╛рде рд╣реА рдПрдХ рд╕рдВрдмрдВрдзрд┐рдд рдкреНрд░рд╢реНрди: рджреВрд╕рд░рд╛ рдЬреЗрдЖрдИрдЯреА рдкрд╛рд╕ рдХрдм рд╢реБрд░реВ рд╣реЛрдЧрд╛? n рд╡реАрдВ рдмрд╛рд░ рдХрд┐рд╕реА рд╡рд┐рдзрд┐ рдХреЛ рдХрдм рдмреБрд▓рд╛рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ? рдХреНрдпрд╛ рдЬреЗрдЖрдИрдЯреА рдЙрд╕ рдзрд╛рдЧреЗ рдкрд░ рд╣реЛрдЧрд╛ рдЬрд┐рд╕ рдкрд░ рд╡рд┐рдзрд┐ рдЪрд▓рдиреА рдЪрд╛рд╣рд┐рдП рдереА? рдпрджрд┐ рдРрд╕рд╛ рд╣реИ, рддреЛ рд╡рд╣ рд╡рд┐рдзрд┐ рдХреЙрд▓ рд╕реЗ рдкрд╣рд▓реЗ рджреЗрд░реА рдХрд╛ рдкрд░рд┐рдЪрдп рджреЗрдЧрд╛ред рдпрджрд┐ рдЖрдк рдЕрдзрд┐рдХ рдЖрдХреНрд░рд╛рдордХ рдЕрдиреБрдХреВрд▓рди рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдпрд╣ рд╡рд┐рд▓рдВрдм рд╡рд░реНрддрдорд╛рди JIT рд╕рдордп рд╕реЗ рдЕрдзрд┐рдХ рд▓рдВрдмрд╛ рд╣реЛрдЧрд╛, рдЬреЛ рдПрдХ рд╕рдорд╕реНрдпрд╛ рдмрди рд╕рдХрддрд╛ рд╣реИред

рдпрд╣ рддрдм рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрдм рд╡рд┐рдзрд┐ рдХреЛ рдкрд░реНрдпрд╛рдкреНрдд рд╕рдордп рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдпрд╛ рдпрджрд┐ рд▓реВрдк
рдкрд░реНрдпрд╛рдкреНрдд рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддрд╛ рд╣реИ (рдордВрдЪ рдкрд░ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди)ред рдпрд╣ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП
рдкреГрд╖реНрдарднреВрдорд┐ рдзрд╛рдЧреЗ рдкрд░ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд░реВрдк рд╕реЗред

29 рдЬреВрди, 2017 рдХреЛ рд╢рд╛рдо 7:01 рдмрдЬреЗ, "рд▓реБрдХрд╛рд╕ рдЯреНрд░рдЬрд╝реЗрд╕реНрдирд┐рд╡реЗрд╕реНрдХреА" рд╕реВрдЪрдирд╛рдПрдВ @github.com
рд▓рд┐рдЦрд╛ рдерд╛:

@noahfalk https://github.com/noahfalk , рдХреНрдпрд╛ рдЖрдк рдХреГрдкрдпрд╛ рдХреЛрдИ рд░рд╛рд╕реНрддрд╛ рдмрддрд╛ рд╕рдХрддреЗ рд╣реИрдВ
рд╕реЗ рддреБрд░рдВрдд рдПрдХ рдЯрд┐рдпрд░ 2 рд╕рдВрдХрд▓рди рдХреЛ рдмрд╛рдзреНрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд░рдирдЯрд╛рдЗрдо рдХреЛ рдмрддрд╛рдиреЗ рдХреЗ рд▓рд┐рдП
рдкреНрд░рдмрдВрдзрд┐рдд рдХреЛрдб рд╣реА? рдЕрдзрд┐рдХрд╛рдВрд╢ рдХреЗ рд▓рд┐рдП рд╕реНрддрд░реАрдп рд╕рдВрдХрд▓рди рдПрдХ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИ
рдорд╛рдорд▓реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рд▓реЗрдХрд┐рди рдореИрдВ рдПрдХ рдРрд╕реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдЬрд╣рд╛рдВ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рд╕рдордп рдЕрдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╣реИ
рд▓реЗрдХрд┐рди рдереНрд░реВрдкреБрдЯ рдФрд░ рдПрдХ рд╕реНрдерд┐рд░ рд╡рд┐рд▓рдВрдмрддрд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред

рдореЗрд░реЗ рд╕рд┐рд░ рдХреЗ рдКрдкрд░ рд╕реЗ, рдпрд╣ рдпрд╛ рддреЛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ:

  • рдХреЙрдиреНрдлрд╝рд┐рдЧ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдПрдХ рдирдИ рд╕реЗрдЯрд┐рдВрдЧ, рдПрдХ рд╕реНрд╡рд┐рдЪ рдХреА рддрд░рд╣ enable="true" /> JIT рдХреЛ рд╣рдореЗрд╢рд╛ рдЯрд┐рдпрд░ 1 рдЫреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП
  • рдпрд╛ RuntimeHelpers.PrepareMethod рдЬреИрд╕рд╛ рдХреБрдЫ, рдЬреЛ рд╣реЛрдЧрд╛
    рд╕рднреА рд╡рд┐рдзрд┐рдпреЛрдВ рдкрд░ рдХреЛрдб рджреНрд╡рд╛рд░рд╛ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рдЧрд░реНрдо рдкрде рдХреЗ рднрд╛рдЧ рд╣реИрдВ (рд╣рдо рд╣реИрдВ
    рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдкрд░ рд╣рдорд╛рд░реЗ рдХреЛрдб рдХреЛ рдкреНрд░реА-рдЬреЗрдЖрдИрдЯреА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░реЗрдВ)ред рдЗрд╕рдХрд╛ рдлрд╛рдпрджрд╛ рд╣реИ
    рдбреЗрд╡рд▓рдкрд░ рдХреЛ рдЕрдзрд┐рдХ рд╕реЗ рдЕрдзрд┐рдХ рд╕реНрд╡рддрдВрддреНрд░рддрд╛ рджреЗрдирд╛, рдЬрд┐рд╕реЗ рдкрддрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдХреНрдпрд╛
    рдЧрд░реНрдо рдкрде рд╣реИред рдЗрд╕ рдкрджреНрдзрддрд┐ рдХрд╛ рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдЕрдзрд┐рднрд╛рд░ рдареАрдХ рд░рд╣реЗрдЧрд╛ред

рдорд╛рдирд╛, рдЗрд╕рд╕реЗ рдХреБрдЫ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЛ рд▓рд╛рдн рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдореИрдВ рдЗрд╕рд╕реЗ рдЪрд┐рдВрддрд┐рдд рд╣реВрдВ
рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЬреЗрдЖрдИрдЯреА рд▓рдВрдШрди рдЕрдиреБрдХреВрд▓рди, рдФрд░ рдореИрдВ рдЗрд╕реЗ рдмрддрд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реВрдВ
рдореИрдВ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдЕрдкрдиреЗ рдХреЛрдб рдХреЛ рднрд╛рд░реА рд░реВрдк рд╕реЗ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред

рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдиреЗ рдбрд┐рдЬрд╝рд╛рдЗрди рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд▓рд┐рдЦрд╛ рд╣реИ:

рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рдмрдВрдзрд┐рдд рдХреЛрдб API рд╕реЗ рд╕реБрд▓рдн рдирдИ рдмрд┐рд▓реНрдб рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдЪрд░рдг рдЬреЛрдбрд╝реЗрдВ
рд╕реНрд╡-рд╕рдВрд╢реЛрдзрд┐рдд рдХреЛрдбред

рдЬреЛ рдмрд╣реБрдд рджрд┐рд▓рдЪрд╕реНрдк рд▓рдЧрддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдкреВрд░рд╛ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЗрд╕рдореЗрдВ рдХреНрдпрд╛ рд╢рд╛рдорд┐рд▓ рд╣реИ

рдореИрдВ рдпрд╣рд╛рдБ рдкреВрдЫ рд░рд╣рд╛ рд╣реВрдБред

рд╕рд╛рде рд╣реА рдПрдХ рд╕рдВрдмрдВрдзрд┐рдд рдкреНрд░рд╢реНрди: рджреВрд╕рд░рд╛ рдЬреЗрдЖрдИрдЯреА рдкрд╛рд╕ рдХрдм рд╢реБрд░реВ рд╣реЛрдЧрд╛? рдЬрдм рдПрдХ
рд╡рд┐рдзрд┐ рдХреЛ n рд╡реАрдВ рдмрд╛рд░ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ? рдХреНрдпрд╛ рдЬреЗрдЖрдИрдЯреА рдкрд░ рд╣реЛрдЧрд╛
рд╡рд╣ рдзрд╛рдЧрд╛ рдЬрд┐рд╕ рдкрд░ рд╡рд┐рдзрд┐ рдЪрд▓рд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдерд╛? рдпрджрд┐ рдРрд╕рд╛ рд╣реИ, рддреЛ рд╡рд╣ рдкрд░рд┐рдЪрдп рджреЗрдЧрд╛ a
рд╡рд┐рдзрд┐ рдХреЙрд▓ рд╕реЗ рдкрд╣рд▓реЗ рджреЗрд░реАред рдпрджрд┐ рдЖрдк рдЕрдзрд┐рдХ рдЖрдХреНрд░рд╛рдордХ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВ
рдЕрдиреБрдХреВрд▓рди рдпрд╣ рд╡рд┐рд▓рдВрдм рд╡рд░реНрддрдорд╛рди JIT рд╕рдордп рд╕реЗ рдЕрдзрд┐рдХ рд▓рдВрдмрд╛ рд╣реЛрдЧрд╛, рдЬреЛ
рдореБрджреНрджрд╛ рдмрди рд╕рдХрддрд╛ рд╣реИред

-
рдЖрдк рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рд╕реАрдзреЗ рдЙрддреНрддрд░ рджреЗрдВ, рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ
https://github.com/dotnet/coreclr/issues/4331#issuecomment-312130920 ,
рдпрд╛ рдереНрд░реЗрдб рдХреЛ рдореНрдпреВрдЯ рдХрд░реЗрдВ
https://github.com/notifications/unsubscribe-auth/AGGWB2WbZ2qVBjRIQWS86MStTSa1ODfoks5sJCzOgaJpZM4IHWs8
.

@ltrzesniewski - рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж! рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдмрд╣реБрд╕рдВрдЦреНрдпрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╕реНрддрд░реАрдп рд╕рдВрдХрд▓рди рдЙрдкрдпреЛрдЧреА рд╣реИ рд▓реЗрдХрд┐рди рдЯреНрд░реЗрдбрдСрдлрд╝ рд╣рд░ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП рдЖрджрд░реНрд╢ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдореИрдВ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рд╣рдо рдЯрд┐рдпрд░ рдЬрд┐рдЯрд┐рдВрдЧ рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдЫреЛрдбрд╝ рджреЗрдВрдЧреЗ, рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдЖрдк рд░рдирдЯрд╛рдЗрдо рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдЕрдм рдЙрдЪреНрдЪ рдЧреБрдгрд╡рддреНрддрд╛ (рд▓реЗрдХрд┐рди рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдзреАрдореЗ) рдХреЗ рд╕рд╛рде рдЖрдЧреЗ рдмрдврд╝рддреЗ рд╣реБрдП рд░рдЦрддреЗ рд╣реИрдВред рдХреНрдпрд╛ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рд╕реЗрдЯ рдХрд░рдирд╛ рдЖрдкрдХреЗ рдРрдк рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдЙрдЪрд┐рдд рд╣реИ? рдЕрдиреНрдп рд╡рд┐рдХрд▓реНрдк рднреА рд╕рдВрднрд╡ рд╣реИрдВ, рдореИрдВ рд╕рд┐рд░реНрдл рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдХреЗ рд▓рд┐рдП рдЧреБрд░реБрддреНрд╡рд╛рдХрд░реНрд╖рдг рдХрд░рддрд╛ рд╣реВрдВ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╕рдмрд╕реЗ рд╕рд░рд▓ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╡рд┐рдХрд▓реНрдкреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИ рдЬрд┐рд╕рдХрд╛ рд╣рдо рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рд╕рд╛рде рд╣реА рдПрдХ рд╕рдВрдмрдВрдзрд┐рдд рдкреНрд░рд╢реНрди: рджреВрд╕рд░рд╛ рдЬреЗрдЖрдИрдЯреА рдкрд╛рд╕ рдХрдм рд╢реБрд░реВ рд╣реЛрдЧрд╛?

рдпрд╣ рдПрдХ рдРрд╕реА рдиреАрддрд┐ рд╣реИ рдЬрд┐рд╕рдХреЗ рд╕рдордп рдХреЗ рд╕рд╛рде рд╡рд┐рдХрд╕рд┐рдд рд╣реЛрдиреЗ рдХреА рдмрд╣реБрдд рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИред рд╡рд░реНрддрдорд╛рди рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдПрдХ рд╕рд░рд▓ рдиреАрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ: "рдХреНрдпрд╛ рд╡рд┐рдзрд┐ рдХреЛ> = 30 рдмрд╛рд░ рдХрд╣рд╛ рдЧрдпрд╛ рд╣реИ"
https://github.com/dotnet/coreclr/blob/master/src/vm/tieredcompilation.cpp#L89
https://github.com/dotnet/coreclr/blob/master/src/vm/tieredcompilation.cpp#L122

рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд░реВрдк рд╕реЗ рдпрд╣ рдмрд╣реБрдд рд╣реА рд╕рд░рд▓ рдиреАрддрд┐ рдореЗрд░реА рдорд╢реАрди рдкрд░ рдПрдХ рдЕрдЪреНрдЫрд╛ рдкреВрд░реНрдг рд╕реБрдзрд╛рд░ рд╕реБрдЭрд╛рддреА рд╣реИ, рднрд▓реЗ рд╣реА рдпрд╣ рдХреЗрд╡рд▓ рдПрдХ рдЕрдиреБрдорд╛рди рд╣реЛред рдмреЗрд╣рддрд░ рдиреАрддрд┐рдпрд╛рдВ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рдХреБрдЫ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рджреБрдирд┐рдпрд╛ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдФрд░ рдЙрд╕ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реЛрдЧрд╛ рдХрд┐ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдХреЗ рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдореЗрдВ рдореБрдЦреНрдп рдпрд╛рдВрддреНрд░рд┐рдХреА рдпрдереЛрдЪрд┐рдд рд░реВрдк рд╕реЗ рдордЬрдмреВрдд рд╣реЛрдВред рдЗрд╕рд▓рд┐рдП рдореЗрд░реА рдпреЛрдЬрдирд╛ рд╣реИ рдХрд┐ рдкрд╣рд▓реЗ рдордЬрдмреВрддреА/рд╕рдВрдЧрдд рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рдП рдФрд░ рдлрд┐рд░ рдЯреНрдпреВрдирд┐рдВрдЧ рдиреАрддрд┐ рдХреЗ рд▓рд┐рдП рдФрд░ рдЕрдзрд┐рдХ рдЕрдиреНрд╡реЗрд╖рдг рдХрд┐рдпрд╛ рдЬрд╛рдПред

@DemiMarie - рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЕрдм рдиреАрддрд┐ рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ рд▓реВрдк рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ рдХреЛ рдЯреНрд░реИрдХ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рднрд╡рд┐рд╖реНрдп рдХреЗ рд▓рд┐рдП рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИред

рдХреНрдпрд╛ рдкреНрд░реЛрдлрд╛рдЗрд▓рд┐рдВрдЧ, рд╕рдЯреНрдЯрд╛ рдЕрдиреБрдХреВрд▓рди, рдФрд░ . рдкрд░ рдХреЛрдИ рд╡рд┐рдЪрд╛рд░ рдЖрдпрд╛ рд╣реИ?
рдЕрдиреБрдХреВрд▓рди ? JVM рдпрд╣ рд╕рдм рдХрд░рддрд╛ рд╣реИред

29 рдЬреВрди, 2017 рдХреЛ рд░рд╛рдд 8:58 рдмрдЬреЗ, "рдиреВрд╣ рдлрд╛рд▓реНрдХ" рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди @github.com рдиреЗ рд▓рд┐рдЦрд╛:

@ltrzesniewski https://github.com/ltrzesniewski - рдЗрд╕рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж
рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛! рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рд╡рд┐рд╕реНрддреГрдд рд╕рдВрдХрд▓рди рд╡рд┐рд╢рд╛рд▓ . рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛
рдЕрдзрд┐рдХрд╛рдВрд╢ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд▓реЗрдХрд┐рди рдЯреНрд░реЗрдбрдСрдлрд╝ рд╣рд░ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдЖрджрд░реНрд╢ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред
рдореИрдВ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рд╣рдо рдПрдХ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдХреЛ рдЬрдЧрд╣ рдореЗрдВ рдЫреЛрдбрд╝ рджреЗрдВрдЧреЗ
tiered jitting рдХреЛ рдЕрдХреНрд╖рдо рдХрд░реЗрдВ, рдЬрд┐рд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдЖрдк рд░рдирдЯрд╛рдЗрдо рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдмрдирд╛рдП рд░рдЦрддреЗ рд╣реИрдВ
рдЕрдм рдЙрдЪреНрдЪ рдЧреБрдгрд╡рддреНрддрд╛ рдХреЗ рд╕рд╛рде рд╣реИ (рд▓реЗрдХрд┐рди рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдзреАрдорд╛) рд╕рд╛рдордиреЗ рдХреА рдУрд░ рдЭреБрдХрдирд╛ред рд╣реИ
рдПрдХ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рд╕реЗрдЯ рдХрд░рдирд╛ рдЖрдкрдХреЗ рдРрдк рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдЙрдЪрд┐рдд рд╣реИ?
рдЕрдиреНрдп рд╡рд┐рдХрд▓реНрдк рднреА рд╕рдВрднрд╡ рд╣реИрдВ, рдореИрдВ рд╕рд┐рд░реНрдл рдкрд░реНрдпрд╛рд╡рд░рдг рдХреА рдУрд░ рдЖрдХрд░реНрд╖рд┐рдд рд╣реВрдВ
рдЪрд░ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╕рдмрд╕реЗ рд╕рд░рд▓ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╡рд┐рдХрд▓реНрдкреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИ рдЬрд┐рд╕рдХрд╛ рд╣рдо рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рд╕рд╛рде рд╣реА рдПрдХ рд╕рдВрдмрдВрдзрд┐рдд рдкреНрд░рд╢реНрди: рджреВрд╕рд░рд╛ рдЬреЗрдЖрдИрдЯреА рдкрд╛рд╕ рдХрдм рд╢реБрд░реВ рд╣реЛрдЧрд╛?

рдпрд╣ рдПрдХ рдРрд╕реА рдиреАрддрд┐ рд╣реИ рдЬрд┐рд╕рдХреЗ рд╕рдордп рдХреЗ рд╕рд╛рде рд╡рд┐рдХрд╕рд┐рдд рд╣реЛрдиреЗ рдХреА рдмрд╣реБрдд рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИред рдж рдХрд░реЗрдВрдЯ
рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдПрдХ рд╕рд░рд▓ рдиреАрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ: "рдХреНрдпрд╛ рдпрд╣ рддрд░реАрдХрд╛ рд╣реИ
рдХреЙрд▓ рдХрд┐рдпрд╛>= 30 рдмрд╛рд░"
https://github.com/dotnet/coreclr/blob/master/src/vm/
tieredcompilation.cpp#L89
https://github.com/dotnet/coreclr/blob/master/src/vm/
tieredcompilation.cpp#L122

рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд░реВрдк рд╕реЗ рдпрд╣ рдмрд╣реБрдд рд╣реА рд╕рд░рд▓ рдиреАрддрд┐ рдЗрд╕ рдкрд░ рдПрдХ рдЕрдЪреНрдЫрд╛ рдкреВрд░реНрдг рд╕реБрдзрд╛рд░ рд╕реБрдЭрд╛рддреА рд╣реИ
рдореЗрд░реА рдорд╢реАрди, рднрд▓реЗ рд╣реА рдпрд╣ рд╕рд┐рд░реНрдл рдПрдХ рдЕрдиреБрдорд╛рди рд╣реЛред рдмреЗрд╣рддрд░ рдиреАрддрд┐рдпрд╛рдВ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП
рд╣рдореЗрдВ рдХреБрдЫ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рджреБрдирд┐рдпрд╛ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдФрд░ рдЙрд╕ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ
рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА рдХрд┐ рдХреЛрд░ рдпрд╛рдВрддреНрд░рд┐рдХреА рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдХреЗ рдпрдереЛрдЪрд┐рдд рд░реВрдк рд╕реЗ рдордЬрдмреВрдд рд╣реЛрдВ
рдкрд░рд┐рджреГрд╢реНрдп рдЗрд╕рд▓рд┐рдП рдореЗрд░реА рдпреЛрдЬрдирд╛ рд╣реИ рдХрд┐ рдкрд╣рд▓реЗ рдордЬрдмреВрддреА/рд╕рдВрдЧрдд рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░реЗрдВ рдФрд░ рдлрд┐рд░ рдХрд░реЗрдВ
рдЯреНрдпреВрдирд┐рдВрдЧ рдиреАрддрд┐ рдХреЗ рд▓рд┐рдП рдФрд░ рдЕрдзрд┐рдХ рдЕрдиреНрд╡реЗрд╖рдгред

@DemiMarie https://github.com/demimarie - рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдРрд╕рд╛ рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИ
рд▓реВрдк рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ рдХреЛ рдЕрдм рдиреАрддрд┐ рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ рдЯреНрд░реИрдХ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ
рднрд╡рд┐рд╖реНрдп рдХреЗ рд▓рд┐рдП рд╕рдВрднрд╛рд╡рдирд╛ред

-
рдЖрдк рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рд╕реАрдзреЗ рдЙрддреНрддрд░ рджреЗрдВ, рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ
https://github.com/dotnet/coreclr/issues/4331#issuecomment-312146470 ,
рдпрд╛ рдереНрд░реЗрдб рдХреЛ рдореНрдпреВрдЯ рдХрд░реЗрдВ
https://github.com/notifications/unsubscribe-auth/AGGWB5m2qCnOKJsaXFCFigI3J6Ql8PMQks5sJEgZgaJpZM4IHWs8
.

@noahfalk рдПрдХ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдПрдХ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдЗрд╕ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рджреНрд╡рд╛рд░рд╛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ред рд╕рд░реНрд╡рд░/рд╕реЗрд╡рд╛ рдРрдкреНрд╕ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдЖрдорддреМрд░ рдкрд░ рдкрд░рд╡рд╛рд╣ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдореЗрдВ рдХрд┐рддрдирд╛ рд╕рдордп рд▓рдЧрддрд╛ рд╣реИ (рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдкреНрд░рджрд░реНрд╢рди рдХреА рдХреАрдордд рдкрд░ рдирд╣реАрдВ рд╣реИрдВ)ред рдПрдХ рдбреЗрдЯрд╛рдмреЗрд╕ рдЗрдВрдЬрди рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдирд╛, рдореИрдВ рдЖрдкрдХреЛ рдкрд╣рд▓реЗ рд╣рд╛рде рд╕реЗ рдмрддрд╛ рд╕рдХрддрд╛ рд╣реВрдВ, рд╣рдореЗрдВ рдЗрд╕реЗ рд╢реБрд░реВ рд╕реЗ рд╣реА рдЬрд┐рддрдиреА рдЬрд▓реНрджреА рд╣реЛ рд╕рдХреЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рд╕рдВрднрд╛рд╡рд┐рдд рдирдП рдЧреНрд░рд╛рд╣рдХреЛрдВ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдП рдЧрдП рдЕрд╕рд╛рдзрд╛рд░рдг рдкрде рдпрд╛ рдмреЗрдВрдЪрдорд╛рд░реНрдХ рдкрд░ рднреАред

рджреВрд╕рд░реА рдУрд░, рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рд╕рд╛рдорд╛рдиреНрдп рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдЕрдкрдЯрд╛рдЗрдо рдХреЛ рдПрдХ рд╕рдордп рдореЗрдВ рд╣рдлреНрддреЛрдВ рдореЗрдВ рдорд╛рдкрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд╣рдореЗрдВ рдкрд░рд╡рд╛рд╣ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЗрд╕рдореЗрдВ 30 рд╕реЗрдХрдВрдб рднреА рд▓рдЧрддреЗ рд╣реИрдВ; рд╣рдо рдЬреЛ рдкрд░рд╡рд╛рд╣ рдХрд░рддреЗ рд╣реИрдВ рд╡рд╣ рдпрд╣ рд╣реИ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рд╕реНрд╡рд┐рдЪ (рдСрд▓-рдСрд░-рдирдерд┐рдВрдЧ) рдЬрд╛рд░реА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд░рдирд╛ рдпрд╛ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдЗрд╕рдХреА рдкрд░рд╡рд╛рд╣ рдХрд░рдирд╛ (рдЬреИрд╕реЗ рдХрд┐ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓реЛрдВ рд╕реЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд╕реЗрдЯ рдХрд░рдирд╛) 10 рдХрджрдо рдкреАрдЫреЗ рд╣реИред

рдореБрдЭреЗ рдЧрд▓рдд рдордд рд╕рдордЭреЛ рдореИрдВ рдПрдХ Tiered JIT рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдБ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдПрдХ рдЙрдЪреНрдЪ рдкреНрд░рджрд░реНрд╢рди рдХрд╛ рдорд╛рд░реНрдЧ рдЦреЛрд▓рддрд╛ рд╣реИ рдЬрд┐рддрдирд╛ рд╕рдордп рдЖрдкрдХреЛ JIT рд╕реНрддрд░ рдкрд░ рдЕрдиреБрдХреВрд▓рди рдХреЗ рд▓рд┐рдП рдХреЛрдбрдкрде рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдореИрдВрдиреЗ рдпрд╣ рднреА рд╕реБрдЭрд╛рд╡ рджрд┐рдпрд╛ рдерд╛ рдХрд┐ рдмрд╣реБрдд рд╕рдордп рдкрд╣рд▓реЗ рдореИрдВрдиреЗ рдХреБрдЫ рдЬреЗрдЖрдИрдЯреА рдЗрдВрдЬреАрдирд┐рдпрд░реЛрдВ рдХреЗ рд╕рд╛рде рдЕрдиреМрдкрдЪрд╛рд░рд┐рдХ рдмрд╛рддрдЪреАрдд рдХреА рдереА, рдФрд░ рдЖрдк рдЗрд╕реЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд░рдбрд╛рд░ рдкрд░ рдереЗред рд▓реЗрдХрд┐рди рд╡реНрдпрд╡рд╣рд╛рд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рд╡реНрдпрд╛рдкрдХ (рд╕рд┐рд╕реНрдЯрдо рд╡рд╛рдЗрдб рдирд╣реАрдВ) рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ (рдХрдо рд╕реЗ рдХрдо рд╣рдорд╛рд░реЗ рд▓рд┐рдП) рдЗрд╕ рд╡рд┐рд╢реЗрд╖ рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЧреБрдгрд╡рддреНрддрд╛ рд╕рдВрдХреЗрддрдХ рд╣реИред

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рдХреБрдЫ рд╢реИрд▓реА рдХреЗ рдореБрджреНрджреЗред

@redknightlois - рдЕрдиреБрд╡рд░реНрддреА рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж

рдПрдХ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдПрдХ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдЗрд╕ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рджреНрд╡рд╛рд░рд╛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ред

рдЗрд╕ рд╣рд┐рд╕реНрд╕реЗ рдкрд░ рдереЛрдбрд╝рд╛ рднреНрд░рдорд┐рдд ... рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдореЗрдВ рдкреНрд░рддрд┐-рд╕рд┐рд╕реНрдЯрдо рдЧреНрд░реИрдиреНрдпреБрд▓реИрд░рд┐рдЯреА рдХреЗ рдмрдЬрд╛рдп рдкреНрд░рддрд┐-рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╣реИ, рдХрдо рд╕реЗ рдХрдо рдЙрди рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдореЗрдВ рдЬрд┐рдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореБрдЭреЗ рдкрддрд╛ рдерд╛ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдЖрдЬ рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рдЪрд▓рд╛рдП рдЬрд╛ рд░рд╣реЗ рдХреЗрд╡рд▓ рдПрдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рд╕реНрддрд░реАрдп рд╕рдВрдХрд▓рди рдЪрд╛рд▓реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП:

set COMPLUS_EXPERIMENTAL_TieredCompilation=1
MyApp.exe
set COMPLUS_EXPERIMENTAL_TieredCompilation=0

рд╣рдо рдЬреЛ рдкрд░рд╡рд╛рд╣ рдХрд░рддреЗ рд╣реИрдВ рд╡рд╣ рдпрд╣ рд╣реИ рдХрд┐ [рд╣рдо рдирд╣реАрдВ] рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдЗрд╕рдХреА рдкрд░рд╡рд╛рд╣ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд░рддреЗ рд╣реИрдВ

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдПрдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╕реЗрдЯрд┐рдВрдЧ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдЬрд┐рд╕реЗ рдРрдк рдбреЗрд╡рд▓рдкрд░ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдРрдк рдЪрд▓рд╛рдиреЗ рд╡рд╛рд▓реЗ рд╡реНрдпрдХреНрддрд┐ рджреНрд╡рд╛рд░рд╛ рдирд╣реАрдВ? env var рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдВрднрд╛рд╡рдирд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдРрдк рдХреЛ рдПрдХ рдЫреЛрдЯрд╛ рд░реИрдкрд░ (рдмреИрдЪ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреА рддрд░рд╣) рд▓реЙрдиреНрдЪ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдХреЛрд░рдХреНрд▓рд░ рдРрдк рд▓реЙрдиреНрдЪ рдХрд░рддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореИрдВ рдорд╛рдирддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рдереЛрдбрд╝рд╛ рд╕реБрд░реБрдЪрд┐рдкреВрд░реНрдг рд▓рдЧрддрд╛ рд╣реИред рдореИрдВ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЗ рд▓рд┐рдП рдЦреБрд▓рд╛ рд╣реВрдВ рдФрд░ env var рдкрд░ рд╕реЗрдЯ рдирд╣реАрдВ рд╣реВрдВред рдЙрдореНрдореАрджреЛрдВ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рдРрд╕рд╛ рдХреНрд╖реЗрддреНрд░ рдирд╣реАрдВ рд╣реИ рдЬрд┐рд╕реЗ рдореИрдВ рдирд┐рдХрдЯ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рд╕рдХреНрд░рд┐рдп рдбрд┐рдЬрд╛рдЗрди рдкреНрд░рдпрд╛рд╕ рдЦрд░реНрдЪ рдХрд░реВрдВрдЧрд╛, рд▓реЗрдХрд┐рди рдореИрдВ рдорд╛рдирддрд╛ рд╣реВрдВ рдХрд┐ рдЙрдЪрд┐рдд рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╣реЛрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдПрдХ рд╕рд┐рд░ рдКрдкрд░ - рдпрд╣ рдорд╛рдирддреЗ рд╣реБрдП рдХрд┐ рд╣рдо рд╕реНрддрд░реАрдп рд╕рдВрдХрд▓рди рдкрде рдХреЛ рдПрдХ рд╕рднреНрдп рддрд░реАрдХреЗ рд╕реЗ рдЬрд╛рд░реА рд░рдЦрддреЗ рд╣реИрдВ, рдореИрдВ рдЖрд╕рд╛рдиреА рд╕реЗ рдХрд▓реНрдкрдирд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рд╣рдо рдПрдХ рдРрд╕реЗ рдмрд┐рдВрджреБ рдкрд░ рдкрд╣реБрдВрдЪ рдЬрд╛рддреЗ рд╣реИрдВ рдЬрд╣рд╛рдВ рд╕реНрддрд░реАрдп рд╕рдВрдХрд▓рди рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдирд╛ рди рдХреЗрд╡рд▓ рд╕рдмрд╕реЗ рддреЗрдЬрд╝ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рд╣реИ, рдмрд▓реНрдХрд┐ рдпрд╣ рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рд░ рд╕реНрдерд┐рддрд┐ рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рднреА рдорд╛рдд рджреЗрддрд╛ рд╣реИред рдЕрднреА рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдкрд░рдл рдореЗрд░рд╛ рд▓рдХреНрд╖реНрдп рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреА рд╕реАрдорд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╣рдо рдЗрд╕рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:)

рдХреНрдпрд╛ рдкреНрд░реЛрдлрд╛рдЗрд▓рд┐рдВрдЧ, рд╕рдЯреНрдЯрд╛ рдЕрдиреБрдХреВрд▓рди, рдФрд░ . рдкрд░ рдХреЛрдИ рд╡рд┐рдЪрд╛рд░ рдЖрдпрд╛ рд╣реИ?
рдЕрдиреБрдХреВрд▓рди ?

@DemiMarie - рд╡реЗ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдмрд╛рддрдЪреАрдд рдореЗрдВ рдЖрдП рд╣реИрдВ рдФрд░ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдмрд╣реБрдд рд╕реЗ рд▓реЛрдЧ рдЙрддреНрд╕рд╛рд╣рд┐рдд рд╣реИрдВ рдХрд┐ рд╕реНрддрд░реАрдп рд╕рдВрдХрд▓рди рдЗрди рд╕рдВрднрд╛рд╡рдирд╛рдУрдВ рдХреЛ рдЦреЛрд▓рддрд╛ рд╣реИред рдХреЗрд╡рд▓ рдЕрдкрдиреЗ рд▓рд┐рдП рдмреЛрд▓рддреЗ рд╣реБрдП, рдореИрдВ рдЕрдкрдиреА рджреГрд╖реНрдЯрд┐ рдХреЛ рдФрд░ рдКрдВрдЪрд╛ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдореВрд▓рднреВрдд рд╕реНрддрд░реАрдп рд╕рдВрдХрд▓рди рдХреНрд╖рдорддрд╛рдУрдВ рдХреЛ рд╡рд┐рддрд░рд┐рдд рдХрд░рдиреЗ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рд╣рдорд╛рд░реЗ рд╕рдореБрджрд╛рдп рдХреЗ рдЕрдиреНрдп рд▓реЛрдЧ рд╢рд╛рдпрдж рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЕрдиреНрдп рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдкрд░ рдореБрдЭреЗ рдЖрдЧреЗ рдмрдврд╝рд╛ рд░рд╣реЗ рд╣реИрдВред

@noahfalk рд╣рд╛рдВ, рд╕реБрд░реБрдЪрд┐рдкреВрд░реНрдг рд╣реЛрдиреЗ рдХрд╛ рдорддрд▓рдм рдпрд╣ рднреА рд╣реИ рдХрд┐ рдЗрд╕реЗ рдЪрд▓рд╛рдиреЗ рдХреА рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░рдХреНрд░рд┐рдпрд╛ (рдФрд░ рдмрд╣реБрдд рд╕рдВрднрд╛рд╡рдирд╛ рд╣реЛрдЧреА) рддреНрд░реБрдЯрд┐ рдкреНрд░рд╡рдг рд╣реЛ рд╕рдХрддреА рд╣реИ рдФрд░ рдпрд╣ рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдореБрджреНрджрд╛ рд╣реИ (рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдПрдХрдорд╛рддреНрд░ рддрд░реАрдХрд╛ рдХреЛрдИ рднреА рдЧрдбрд╝рдмрдбрд╝ рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ рдЗрд╕реЗ рд╕рд┐рд╕реНрдЯрдо-рд╡реНрдпрд╛рдкреА рдХрд░ рд░рд╣рд╛ рд╣реИ)ред рдПрдХ рд╡рд┐рдХрд▓реНрдк рдЬрд┐рд╕реЗ рд╣рдо рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЙрд╕реА рддрд░рд╣ рдЖрдк рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдпрджрд┐ рдЖрдк app.config рдореЗрдВ рдПрдХ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдХреЗ рд╕рд╛рде рд╕рд░реНрд╡рд░ рдЬреАрд╕реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ рддреЛ рдЖрдк рдЯрд┐рдпрд░ рд╕рдВрдХрд▓рди рдХреЗ рд╕рд╛рде рдРрд╕рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рдХрдо рд╕реЗ рдХрдо рдЬрдм рддрдХ tiered рд▓рдЧрд╛рддрд╛рд░ рд╕реНрдерд┐рд░ рд░рд╛рдЬреНрдп рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рд╣рд░рд╛ рд╕рдХрддрд╛ рд╣реИ)ред рдЬреЗрдЖрдИрдЯреА рд╣реЛрдиреЗ рдХреЗ рдирд╛рддреЗ, рдЖрдк assembly.config рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рддрд┐ рдЕрд╕реЗрдВрдмрд▓реА рднреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдХреНрд╖рдорддрд╛рдУрдВ рдХреА рдПрдХ рдбрд┐рдЧреНрд░реА рдкреНрд░рджрд╛рди рдХрд░реЗрдВрдЧреЗ рдЬреЛ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИ рдпрджрд┐ рдЕрдиреНрдп рдиреЙрдмреНрд╕ рдХреЛ рднреА рдЙрд╕ рддрд░рд╣ рд╕реЗ рдЪреБрдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

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

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рд╕рдмрд╕реЗ рдЖрдо рдкрде рдХреЛ рд▓рд╛рдЧреВ рдХрд░реЗрдВрдЧреЗ рдЬреЛ рдкреНрд░рддрд┐-рдЖрд╡реЗрджрди рд╣реИред рд╕рд┐рд╕реНрдЯрдо-рд╡реНрдпрд╛рдкреА рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рднреА рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддреА рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдлреАрдЪрд░ рд▓рд╛рдЧреВ рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╣рдореЗрдВ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрдирд╛ рд╣реЛрдЧрд╛ред

рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд╣рдордиреЗ рдХрд┐рд╕реА рднреА рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ рдХрд┐ рдЕрдиреБрдХреВрд▓рди рдХреЗ рд▓рд┐рдП рджреВрд╕рд░реЗ рд╕реНрддрд░ рдХреЗ рдЬрд┐рдЯ рдХреЛ рдХреНрдпрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХреБрдЫ рд╡рд┐рдЪрд╛рд░ рд╣реИрдВред рдпрд╣ рд╡рд╣реА рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдЖрдЬ рдЬрд┐рдЯ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХрд╛рдлреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рдпрд╣ рдФрд░ рднреА рдХрд░реЗрдЧрд╛ред

рддреЛ рдореИрдВ рдХреБрдЫ рд╕рдВрднрд╛рд╡рд┐рдд рдЬрдЯрд┐рд▓рддрд╛рдУрдВ рдХреА рдУрд░ рдЗрд╢рд╛рд░рд╛ рдХрд░рддрд╛ рд╣реВрдВ ....

рдпрд╣ рд╕рдВрднрд╡ рд╣реИ рдХрд┐ рджреНрд╡рд┐рддреАрдп-рд╕реНрддрд░реАрдп рдЬрд┐рдЯ рдкреНрд░рдердо-рд╕реНрддрд░реАрдп рдЬрд┐рдЯ рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдП рдЧрдП рдХреЛрдб рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдкрд░ рдХрд┐рдП рдЧрдП рдЕрд╡рд▓реЛрдХрдиреЛрдВ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдЦреБрдж рдХреЛ рдмреВрдЯрд╕реНрдЯреНрд░реИрдк рдХрд░реЗрдЧрд╛ред рдЗрд╕рд▓рд┐рдП рдлрд░реНрд╕реНрдЯ-рдЯрд┐рдпрд░ рдЬрд┐рдЯ рдХреЛ рдЫреЛрдбрд╝рдХрд░ рдФрд░ рд╕реЗрдХреЗрдВрдб-рдЯрд┐рдпрд░ рдЬрд┐рдЯ рдХреЗ рд▓рд┐рдП рд╕реАрдзреЗ рддреМрд░ рдкрд░ рдкреВрдЫрдирд╛ рдмрд┐рд▓реНрдХреБрд▓ рднреА рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдпрд╛ рдХрд╛рдо рдирд╣реАрдВ рднреА рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ рдЯрд┐рдпрд░рд┐рдВрдЧ рдХреЛ рдЕрдкрдирд╛ рдХреЛрд░реНрд╕ рдЪрд▓рд╛рдиреЗ рджреЗрдирд╛ред рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рдПрдХ "рдЯрд┐рдпрд░рд┐рдВрдЧ рдмрд╛рдИрдкрд╛рд╕" рд╡рд┐рдХрд▓реНрдк, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдХреЛрдб рдХреЛ рдЙрд╕ рдХреЛрдб рдХреА рддрд░рд╣ рджреЗрдирд╛ рд╕рдорд╛рдкреНрдд рдХрд░ рджреЗрдЧрд╛ рдЬреЛ рдЬрд┐рдЯ рдЖрдЬ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ, рди рдХрд┐ рд╡рд╣ рдХреЛрдб рдЬреЛ рд╕реЗрдХреЗрдВрдб-рдЯрд┐рдпрд░ рдЬрд┐рдЯ рдЙрддреНрдкрдиреНрди рдХрд░ рд╕рдХрддрд╛ рд╣реИред

рд╕реЗрдХреЗрдВрдб-рдЯрд┐рдпрд░ рдЬрд┐рдЯ рдХреЛ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдЯреНрдпреВрди рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдПрдХ рдмрдбрд╝реЗ рд╕реЗрдЯ рдкрд░ рдЪрд▓рд╛рдиреЗ рд╕реЗ рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рдзреАрдореА рдЬрд┐рдЯ рдЯрд╛рдЗрдо рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ (рдЪреВрдВрдХрд┐ рд╣рдорд╛рд░реА рдЕрдкреЗрдХреНрд╖рд╛ рдпрд╣ рд╣реИ рдХрд┐ рд╕реЗрдХреЗрдВрдб-рдЯрд┐рдпрд░ рдЬрд┐рдЯ рдХреЗ рд╕рд╛рде рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рдХреБрдЫ рддрд░реАрдХреЗ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рдПрдВрдЧреЗ, рдФрд░ рд╣рдо рдЙрдореНрдореАрдж рдХрд░рддреЗ рд╣реИрдВ рджреНрд╡рд┐рддреАрдп-рд╕реНрддрд░реАрдп рдЬрд┐рдЯ рдЕрдзрд┐рдХ рдЧрд╣рди рдЕрдиреБрдХреВрд▓рди рдХрд░реЗрдЧрд╛)ред рд╣рдо рдЕрднреА рддрдХ рдпрд╣рд╛рдВ рд╕рд╣реА рдЯреНрд░реЗрдбрдСрдлрд╝ рдирд╣реАрдВ рдЬрд╛рдирддреЗ рд╣реИрдВред

рдРрд╕рд╛ рдХрд╣реЗ рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж...

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдПрдХ "рдЖрдХреНрд░рд╛рдордХ рдЕрдиреБрдХреВрд▓рди" рд╡рд┐рдзрд┐ рд╡рд┐рд╢реЗрд╖рддрд╛ рд╕рдордЭ рдореЗрдВ рдЖрддреА рд╣реИ - рдПрдХ рдЬреАрдЖрдИрдЯреА рдХреЛ рдХреБрдЫ рд╣рдж рддрдХ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣ рд░рд╣рд╛ рд╣реИ рдЬреИрд╕реЗ рдХрд┐ рджреВрд╕рд░реЗ-рд╕реНрддрд░реАрдп рдЬреАрдЖрдИрдЯреА рд╡рд┐рд╢рд┐рд╖реНрдЯ рддрд░реАрдХреЛрдВ рдХреЗ рд▓рд┐рдП рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рд╢рд╛рдпрдж рдкреНрд░реАрдЬрд┐рдЯрд┐рдВрдЧ рдХреЗ рджреМрд░рд╛рди рдЗрди рддрд░реАрдХреЛрдВ рдХреЛ рдЫреЛрдбрд╝ рджреЗрддрд╛ рд╣реИ (рдЪреВрдВрдХрд┐ рдкреНрд░реАрдЬрд┐рдЯреЗрдб рдХреЛрдб рдЬреЗрдЯ рдХреЛрдб рд╕реЗ рдзреАрдорд╛ рдЪрд▓рддрд╛ рд╣реИ, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ R2R рдХреЗ рд▓рд┐рдП)ред рд▓реЗрдХрд┐рди рдПрдХ рдЖрд╡реЗрджрди рдореЗрдВ рдЗрд╕ рдзрд╛рд░рдгрд╛ рдХреЛ рдкреВрд░реА рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдпрд╛ рд╕рднреА рд╡рд┐рдзрд╛рдирд╕рднрд╛рдУрдВ рдкрд░ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЖрдХрд░реНрд╖рдХ рдирд╣реАрдВ рд▓рдЧрддрд╛ред

рдпрджрд┐ рдЖрдк рдПрдХ рдЙрдкрдпреБрдХреНрдд рд╕рд╛рджреГрд╢реНрдп рдХреЗ рд░реВрдк рдореЗрдВ рджреЗрд╢реА рдХрдВрдкрд╛рдЗрд▓рд░реЛрдВ рдореЗрдВ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдкреНрд░рджрд░реНрд╢рди рдмрдирд╛рдо рд╕рдВрдХрд▓рди рд╕рдордп/рдХреЛрдб рдЖрдХрд╛рд░ рдЯреНрд░реЗрдбрдСрдл рдЙрдЪреНрдЪ рдЕрдиреБрдХреВрд▓рди рд╕реНрддрд░реЛрдВ рдкрд░ рдмрд╣реБрдд рдЦрд░рд╛рдм рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рдХреБрд▓ 1-2% рд╕реБрдзрд╛рд░ рдХреЗ рд▓рд┐рдП 10x рд▓рдВрдмрд╛ рд╕рдВрдХрд▓рдиред рдкрд╣реЗрд▓реА рдХреА рдХреБрдВрдЬреА рдпрд╣ рдЬрд╛рдирдирд╛ рд╣реИ рдХрд┐ рдХреМрди рд╕реЗ рддрд░реАрдХреЗ рдорд╛рдпрдиреЗ рд░рдЦрддреЗ рд╣реИрдВ, рдФрд░ рдРрд╕рд╛ рдХрд░рдиреЗ рдХрд╛ рдПрдХрдорд╛рддреНрд░ рддрд░реАрдХрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдпрд╛ рддреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЛ рдкрддрд╛ рдЪрд▓реЗ рдпрд╛ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдЕрдкрдиреЗ рд▓рд┐рдП рд╕рдордЭ рд▓рд┐рдпрд╛ рдЬрд╛рдПред

@AndyAyersMS рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдиреЗ рд╡рд╣рд╛рдВ рдХреАрд▓ рдареЛрдХ рджреАред "рдЖрдХреНрд░рд╛рдордХ рдЕрдиреБрдХреВрд▓рди" рд╡рд┐рд╢реЗрд╖рддрд╛ рдХрд╛ рдЗрд▓рд╛рдЬ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдЬреЗрдЖрдИрдЯреА рд╕рдВрднрд╡рдд: рдЬреЗрдЖрдИрдЯреА рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдЬрд╛рдирдХрд╛рд░реА рдирд╣реАрдВ рд╣реЛрдиреЗ рдХреЗ рдХрд╛рд░рдг рдЕрдзрд┐рдХрд╛рдВрд╢ рдореБрджреНрджреЛрдВ рдХреЛ рд╣рд▓ рдХрд░реЗрдЧрд╛, рдЬреЛ рдХрд┐ рдЙрд╕ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЛ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рдердо-рд╕реНрддрд░реАрдп рдЬреАрдЖрдИрдЯреА рдХреЗ рдмрд┐рдирд╛ рдЕрд▓рдЧрд╛рд╡ рдмреЗрд╣рддрд░ рдХреЛрдб рдХрд╛ рдЙрддреНрдкрд╛рджрди рдХрд░ рд╕рдХрддрд╛ рд╣реИред

@redknightlois рд╡рд┐рд╢реЗрд╖рддрд╛ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧреА рдпрджрд┐ рд╣рдо рдЕрдзрд┐рдХ рд╕реНрддрд░реАрдп рдЪрд╛рд╣рддреЗ рд╣реИрдВ: - T3 JIT, T4 JIT, ... рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рджреЛ рд╕реНрддрд░ рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╣рдореЗрдВ рдХрдо рд╕реЗ рдХрдо рдЗрд╕ рд╕рдВрднрд╛рд╡рдирд╛ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдПрдордкреАрдЬреАрдУ рдХреЗ рд╕рдорд╛рди рдХреБрдЫ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рддрд╛рдХрд┐ рджреВрд╕рд░реЗ рд╕реНрддрд░ рдХреЗ рдЬреЗрдЯ рдХреЛрдб рдХреЗ рд╕рд╛рде рдЪрд▓рдирд╛ рд╢реБрд░реВ рд╣реЛ рд╕рдХреЗред рдкреНрд░рдердо-рд╕реНрддрд░реАрдп рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рджрд░рдХрд┐рдирд╛рд░ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рддреЗрдЬреА рд╕реЗ рдЕрдЧреНрд░реЗрд╖рд┐рдд рдХрд░рдирд╛ред

@AndyAyersMS , рдХреНрдпрд╛ рдпрд╣ рддрдереНрдп рд╣реИ рдХрд┐ рдЕрдЬрд╝реБрд▓ рдиреЗ рдПрд▓рдПрд▓рд╡реАрдПрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЬреЗрд╡реАрдПрдо рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рдмрдВрдзрд┐рдд рдЬреЗрдЖрдИрдЯреА рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рд╕реАрдПрд▓рдЖрд░ рдореЗрдВ рдПрд▓рдПрд▓рд╡реАрдПрдо рдХреЛ рдПрдХреАрдХреГрдд рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реЛ рдЧрдпрд╛ рд╣реИ? рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рдПрд▓рдПрд▓рд╡реАрдПрдо рдореЗрдВ рдЕрдкрд╕реНрдЯреНрд░реАрдо рдореЗрдВ рдзрдХреЗрд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

рдмрд╕ рдареАрдХ рд╣реИ, рдореИрдВрдиреЗ рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП рдХрдИ рдХрд╛рд░реНрдп рдЖрдЗрдЯрдо рдмрдирд╛рдП рд╣реИрдВ рдЬреЛ рд╣рдореЗрдВ рдЬрдореАрди рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ (#12609, dotnet/coreclr#12610, dotnet/coreclr#12611, dotnet/coreclr#12612, dotnet/coreclr #12617)ред рдпрджрд┐ рдЖрдкрдХреА рд░реБрдЪрд┐ рд╕реАрдзреЗ рдЙрдирдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдПрдХ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ, рддреЛ рдмреЗрдЭрд┐рдЭрдХ рдЕрдкрдиреА рдЯрд┐рдкреНрдкрдгреА рдЙрди рдкрд░ рдЬреЛрдбрд╝реЗрдВред рдХрд┐рд╕реА рднреА рдЕрдиреНрдп рд╡рд┐рд╖рдп рдХреЗ рд▓рд┐рдП, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЪрд░реНрдЪрд╛ рдпрд╣рд╛рдБ рд░рд╣реЗрдЧреА, рдпрд╛ рдХреЛрдИ рднреА рдХрд┐рд╕реА рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЙрдк-рд╡рд┐рд╖рдп рдХреЗ рд▓рд┐рдП рдПрдХ рдореБрджреНрджрд╛ рдмрдирд╛ рд╕рдХрддрд╛ рд╣реИ рдпрджрд┐ рдЙрд╕рдореЗрдВ рдкрд░реНрдпрд╛рдкреНрдд рд░реБрдЪрд┐ рд╣реЛ рддреЛ рдЗрд╕реЗ рдЕрдкрдиреЗ рджрдо рдкрд░ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред

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

рдЬрд╣рд╛рдВ рддрдХ тАЛтАЛрдПрд▓рдПрд▓рд╡реАрдПрдо рдЖрдзрд╛рд░рд┐рдд рдКрдкрд░реА рд╕реНрддрд░ рдХреА рдмрд╛рдд рд╣реИ - рдЬрд╛рд╣рд┐рд░ рд╣реИ рдХрд┐ рд╣рдордиреЗ рдПрд▓рдПрд▓рдЖрдИрдПрд▓рд╕реА рдХреЗ рд╕рд╛рде рдЗрд╕ рдкрд░ рдХреБрдЫ рд╣рдж рддрдХ рдЧреМрд░ рдХрд┐рдпрд╛ рд╣реИ, рдФрд░ рдЙрд╕ рд╕рдордп рд╣рдо рдЕрдЬрд╝реБрд▓ рд▓реЛрдЧреЛрдВ рдХреЗ рд╕рд╛рде рд▓рдЧрд╛рддрд╛рд░ рд╕рдВрдкрд░реНрдХ рдореЗрдВ рдереЗ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдЙрди рдХрдИ рдЪреАрдЬреЛрдВ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реИрдВ рдЬреЛ рд╡реЗ рдХрд░ рд░рд╣реЗ рдереЗред рдПрд▓рдПрд▓рд╡реАрдПрдо рдЗрд╕реЗ рд╕рдЯреАрдХ рдЬреАрд╕реА рдХреЗ рд╕рд╛рде рднрд╛рд╖рд╛рдУрдВ рдХреЗ рд╕рдВрдХрд▓рди рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рдЕрдиреБрдХреВрд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдПред

рд╕реАрдПрд▓рдЖрд░ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдПрд▓рдПрд▓рд╡реАрдПрдо рд╕рдорд░реНрдерди рдореЗрдВ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЕрдВрддрд░ рдереЗ (рдФрд░ рд╕рдВрднрд╡рддрдГ рдЕрднреА рднреА рд╣реИрдВ) рдЬреАрд╕реА рдФрд░ рдИрдПрдЪ рджреЛрдиреЛрдВ рдореЗрдВ рдЬрд╛рд╡рд╛ рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдФрд░ рдкреНрд░рддрд┐рдмрдВрдзреЛрдВ рдореЗрдВ рдПрдХ рдХреЛ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝рд░ рдкрд░ рд░рдЦрдирд╛ рдЪрд╛рд╣рд┐рдПред рдХреЗрд╡рд▓ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рд╣рд╡рд╛рд▓рд╛ рджреЗрддреЗ рд╣реБрдП: рд╕реАрдПрд▓рдЖрд░ рдЬреАрд╕реА рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдкреНрд░рдмрдВрдзрд┐рдд рдкреЙрдЗрдВрдЯрд░реНрд╕ рдХреЛ рдмрд░реНрджрд╛рд╢реНрдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдЕрдВрдд рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдЬрд╛рд╡рд╛ рдЗрд╕реЗ рдЖрдзрд╛рд░/рд╡реНрдпреБрддреНрдкрдиреНрди рдпреБрдЧреНрдорд┐рдд рд░рд┐рдкреЛрд░реНрдЯрд┐рдВрдЧ рддрдВрддреНрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рдВрднрд╛рд▓рддрд╛ рд╣реИред рд╣рдореЗрдВ рдпрд╛ рддреЛ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреА рдпреБрдЧреНрдорд┐рдд рд░рд┐рдкреЛрд░реНрдЯрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рд╕реАрдПрд▓рдЖрд░ рдореЗрдВ рд╕рдорд░реНрдерди рджреЗрдирд╛ рд╣реЛрдЧрд╛ рдпрд╛ рдПрд▓рдПрд▓рд╡реАрдПрдо рдХреЗ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝рд░ рдкрд╛рд╕ рдХреЛ рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рддрд╛рдХрд┐ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ рдкреЙрдЗрдВрдЯрд░реНрд╕ рдХрднреА рди рдмрдирд╛рдПрдВред рдЙрд╕рдХреЗ рдКрдкрд░, LLILC jit рдзреАрдорд╛ рдерд╛ рдФрд░ рд╣рдореЗрдВ рдпрдХреАрди рдирд╣реАрдВ рдерд╛ рдХрд┐ рдЕрдВрддрддрдГ рдпрд╣ рдХрд┐рд╕ рдкреНрд░рдХрд╛рд░ рдХреА рдХреЛрдб рдЧреБрдгрд╡рддреНрддрд╛ рдЙрддреНрдкрдиреНрди рдХрд░ рд╕рдХрддрд╛ рд╣реИред

рдЗрд╕рд▓рд┐рдП, рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рдХрд┐ рдПрд▓рдПрд▓рдЖрдИрдПрд▓рд╕реА рдПрдХ рд╕рдВрднрд╛рд╡рд┐рдд рдмрд╣реБ-рд╕реНрддрд░реАрдп рджреГрд╖реНрдЯрд┐рдХреЛрдг рдореЗрдВ рдХреИрд╕реЗ рдлрд┐рдЯ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдЕрднреА рддрдХ рдЕрд╕реНрддрд┐рддреНрд╡ рдореЗрдВ рдирд╣реАрдВ рдерд╛ (рдФрд░ рдЕрднреА рднреА рд▓рдЧрддрд╛ рд╣реИ) рд╕рдордп рд╕реЗ рдкрд╣рд▓реЗ рд▓рдЧ рд░рд╣рд╛ рдерд╛ред рдЕрднреА рдХреЗ рд▓рд┐рдП рд╡рд┐рдЪрд╛рд░ рдпрд╣ рд╣реИ рдХрд┐ рдврд╛рдВрдЪреЗ рдореЗрдВ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рдП рдФрд░ рджреВрд╕рд░реЗ рд╕реНрддрд░ рдХреЗ рдЬрд┐рдЯ рдХреЗ рд▓рд┐рдП RyuJit рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПред рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рдФрд░ рдЕрдзрд┐рдХ рд╕реАрдЦрддреЗ рд╣реИрдВ, рд╣рдо рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрдЪреНрдЪ рд╕реНрддрд░реАрдп рдЬрд┐рдЯреНрд╕ рдХреЗ рд▓рд┐рдП рдЬрдЧрд╣ рд╣реИ, рдпрд╛, рдХрдо рд╕реЗ рдХрдо, рдмреЗрд╣рддрд░ рдврдВрдЧ рд╕реЗ рд╕рдордЭреЗрдВ рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреА рдЪреАрдЬреЛрдВ рдХреЛ рд╕рдордЭрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╣рдореЗрдВ рдФрд░ рдХреНрдпрд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

@AndyAyersMS рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдПрд▓рдПрд▓рд╡реАрдПрдо рдореЗрдВ рдЗрд╕рдХреА рд╕реАрдорд╛рдУрдВ рдХреЗ рдЖрд╕рдкрд╛рд╕ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдЖрд╡рд╢реНрдпрдХ рдмрджрд▓рд╛рд╡ рдкреЗрд╢ рдХрд░ рд╕рдХреЗрдВред

рдХреНрдпрд╛ рдорд▓реНрдЯреАрдХреЛрд░ рдЬреЗрдЖрдИрдЯреА рдФрд░ рдЗрд╕рдХрд╛ рдкреНрд░реЛрдлрд╛рдЗрд▓ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬреЗрд╢рди рдХреЛрд░рдХреНрд▓рд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ?

@benaadams - рд╣рд╛рдБ рдорд▓реНрдЯреАрдХреЛрд░ рдЬреЗрдЖрдИрдЯреА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдореБрдЭреЗ рдпрд╛рдж рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХреМрди рд╕рд╛ (рдпрджрд┐ рдХреЛрдИ рд╣реИ) рдкрд░рд┐рджреГрд╢реНрдп рдЬрд╣рд╛рдВ рдпрд╣ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд╕рдХреНрд╖рдо рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдк рдЗрд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЪрд╛рд▓реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: https://github.com/dotnet/coreclr/blob/master/src/inc/clrconfigvalues.h# рдПрд▓548

рдореИрдВрдиреЗ рд╣рд╛рдл-рдЯреЙрдп рдХрдВрдкрд╛рдЗрд▓рд░ рд▓рд┐рдЦрд╛ рд╣реИ рдФрд░ рдореИрдВрдиреЗ рджреЗрдЦрд╛ рд╣реИ рдХрд┐ рдЬреНрдпрд╛рджрд╛рддрд░ рд╕рдордп рд╣рд╛рд░реНрдб рд╣рд┐рдЯрд┐рдВрдЧ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬреЗрд╢рди рдХреЛ рдЙрд╕реА рдЗрдВрдлреНрд░рд╛рд╕реНрдЯреНрд░рдХреНрдЪрд░ рдкрд░ рдХрд╛рдлреА рдУрдХреЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рд╣рд╛рдпрд░ рдЯрд┐рдпрд░ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝рд░ рдореЗрдВ рдмрд╣реБрдд рдХрдо рдЪреАрдЬреЗрдВ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИрдВред

рдореЗрд░рд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ: рдпрджрд┐ рдХреЛрдИ рдлрд╝рдВрдХреНрд╢рди рдХрдИ рдмрд╛рд░ рд╣рд┐рдЯ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдкреИрд░рд╛рдореАрдЯрд░ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИрдВ:

  • рдЗрдирд▓рд╛рдЗрди рдирд┐рд░реНрджреЗрд╢ рд╕рдВрдЦреНрдпрд╛ рдмрдврд╝рд╛рдПрдБ
  • рдЕрдзрд┐рдХ "рдЙрдиреНрдирдд" рд░рдЬрд┐рд╕реНрдЯрд░ рдЖрд╡рдВрдЯрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ (рдПрд▓рдПрд▓рд╡реАрдПрдо-рдЬреИрд╕реЗ рдмреИрдХрдЯреНрд░реИрдХрд┐рдВрдЧ рдХрд▓рд░реЗрдЯрд░ рдпрд╛ рдлреБрд▓-рдХрд▓рд░рд╛рдЗрдЬрд╝рд░)
  • рдЕрдиреБрдХреВрд▓рди рдХреЗ рдЕрдзрд┐рдХ рдкрд╛рд╕ рдХрд░реЗрдВ, рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдХреБрдЫ рд╕реНрдерд╛рдиреАрдп рдЬреНрдЮрд╛рди рдХреЗ рд╕рд╛рде рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╣реЛрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП: рдпрджрд┐ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рд╡рд┐рдзрд┐ рдореЗрдВ рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдмрдбрд╝реЗ рдЗрдирд▓рд╛рдЗрди рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╢рд░реАрд░ рдореЗрдВ рдЕрд╕рд╛рдЗрди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдкреВрд░реНрдг рдСрдмреНрдЬреЗрдХреНрдЯ рдЖрд╡рдВрдЯрди рдХреЛ рд╕реНрдЯреИрдХ рдЖрд╡рдВрдЯрди рдореЗрдВ рдмрджрд▓рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдВред
  • рдЕрдзрд┐рдХрд╛рдВрд╢ рд╣рд┐рдЯ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рд▓рд┐рдП PIC рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдЬрд╣рд╛рдБ CHA рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИред рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ StringBuilder рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рдирд╣реАрдВ рд╣реИ, рдХреЛрдб рдХреЛ рд╣рд░ рдмрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕реЗ StringBuilder рдХреЗ рд╕рд╛рде рдорд╛рд░рд╛ рдЧрдпрд╛ рдерд╛, рдЕрдВрджрд░ рдмреБрд▓рд╛рдП рдЧрдП рд╕рднреА рддрд░реАрдХреЛрдВ рдХреЛ рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рд╡рд┐рдЪрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ SB рдХреА рдкрд╣реБрдВрдЪ рдХреЗ рд╕рд╛рдордиреЗ рдПрдХ рдЯрд╛рдЗрдк-рдЧрд╛рд░реНрдб рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

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

@noahfalk , @kouvel рдФрд░ рдЕрдиреНрдп рдХреА рдХрдбрд╝реА рдореЗрд╣рдирдд рдХреА рдмрджреМрд▓рдд рдЕрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЯрд┐рдпрд░рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдПрдХ рдареЛрд╕ рдЖрдзрд╛рд░ рд╣реИред

рдореЗрд░рд╛ рд╕реБрдЭрд╛рд╡ рд╣реИ рдХрд┐ рд╣рдо рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдмрдВрдж рдХрд░ рджреЗрдВ рдФрд░ рдПрдХ "рд╣рдо рдЯрд╛рдпрд░реНрдб рдЬрд┐рдЯрд┐рдВрдЧ рдХреЛ рдмреЗрд╣рддрд░ рдХреИрд╕реЗ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ" рдореБрджреНрджрд╛ рдЦреЛрд▓реЗрдВред рдореИрдВ рдЗрд╕ рд╡рд┐рд╖рдп рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрдиреЗ рд╡рд╛рд▓реЗ рдХрд┐рд╕реА рднреА рд╡реНрдпрдХреНрддрд┐ рдХреЛ рд╡рд░реНрддрдорд╛рди рд╕реНрддрд░ рдкрд░ рдПрдХ рд╡рд┐рдЪрд╛рд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрддреНрд╕рд╛рд╣рд┐рдд рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ рдЪреАрдЬреЗрдВ рдЕрднреА рдХрд╣рд╛рдВ рд╣реИрдВред рд╣рдо рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╡реНрдпрд╡рд╣рд╛рд░ рдкрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдкрд╕рдВрдж рдХрд░реЗрдВрдЧреЗ, рдЪрд╛рд╣реЗ рд╡рд╣ рдЕрдЪреНрдЫрд╛ рд╣реЛ рдпрд╛ рдмреБрд░рд╛ред

рдХреНрдпрд╛ рд╡рд░реНрддрдорд╛рди рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд╣реАрдВ рд╡рд░реНрдгрд┐рдд рд╣реИ? рдореБрдЭреЗ рдХреЗрд╡рд▓ рдпрд╣ рдорд┐рд▓рд╛ рд▓реЗрдХрд┐рди рдпрд╣ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЯрд┐рдпрд░рд┐рдВрдЧ рдХреЗ рдмрдЬрд╛рдп рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╡рд┐рд╡рд░рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рд╣реИред

рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛтАЛтАЛрд╣реИ рдХрд┐ рд╣рдо рдЬрд▓реНрдж рд╣реА рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╕рд╛рд░рд╛рдВрд╢ рд░рд╛рдЗрдЯрдЕрдк рдЙрдкрд▓рдмреНрдз рдХрд░рд╛рдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ рд╕реЗ рдХреБрдЫ рдбреЗрдЯрд╛ рд╣рдордиреЗ рдПрдХрддреНрд░ рдХрд┐рдпрд╛ рд╣реИред

COMPlus_TieredCompilation=1 рд╕реЗрдЯ рдХрд░рдХреЗ 2.1 рдореЗрдВ рдЯрд┐рдпрд░рд┐рдВрдЧ рдХреЛ рд╕рдХреНрд╖рдо рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдЗрд╕реЗ рдЖрдЬрдорд╛рддреЗ рд╣реИрдВ, рддреЛ рдХреГрдкрдпрд╛ рд╡рд╛рдкрд╕ рд░рд┐рдкреЛрд░реНрдЯ рдХрд░реЗрдВ рдХрд┐ рдЖрдкрдХреЛ рдХреНрдпрд╛ рдорд┐рд▓рд╛ ....

рд╣рд╛рд▓ рдХреЗ рдкреАрдЖрд░ (https://github.com/dotnet/coreclr/pull/17840, https://github.com/dotnet/sdk/pull/2201) рдХреЗ рд╕рд╛рде рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рд░рдирдЯрд╛рдЗрдо рдХреЙрдиреНрдлрд┐рдЧ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реНрддрд░реАрдп рд╕рдВрдХрд▓рди рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рднреА рд╣реИред рдЬреЗрд╕рди рдкреНрд░реЙрдкрд░реНрдЯреА рдпрд╛ рдПрдордПрд╕рдмрд┐рд▓реНрдб рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкреНрд░реЙрдкрд░реНрдЯреАред рдЗрд╕ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдмрд╣реБрдд рд╣рд╛рд▓ рдХреЗ рдирд┐рд░реНрдорд╛рдгреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА рдЬрдмрдХрд┐ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдХреБрдЫ рд╕рдордп рдХреЗ рд▓рд┐рдП рдЖрд╕рдкрд╛рд╕ рд░рд╣рд╛ рд╣реИред

рдЬреИрд╕рд╛ рдХрд┐ рд╣рдордиреЗ @jkotas Tiered JIT рдХреЗ рд╕рд╛рде рдкрд╣рд▓реЗ рдЪрд░реНрдЪрд╛ рдХреА рд╣реИ, рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рд╕рдордп рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдЬрдм рд╣рдо рдореВрд▓ рдЫрд╡рд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдХреНрдпрд╛ рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ?
рд╣рдордиреЗ Tizen рдлреЛрди рдкрд░ рдХрдИ рдРрдкреНрд╕ рдХреЗ рд▓рд┐рдП рдорд╛рдк рдХрд┐рдП рд╣реИрдВ рдФрд░ рдкрд░рд┐рдгрд╛рдо рд╣реИрдВ:

рд╕рд┐рд╕реНрдЯрдо рдбреАрдПрд▓рдПрд▓ | рдРрдк рдбреАрдПрд▓рдПрд▓ | рдЯрд┐рдпрд░ | рд╕рдордп, рдПрд╕
-----------|----------|----------|-------
R2R |R2R |рдирд╣реАрдВ |2.68
R2R |R2R |рд╣рд╛рдБ |2.61 (-3%)
R2R |рдирд╣реАрдВ |рдирд╣реАрдВ |4.40
R2R |рдирд╣реАрдВ |рд╣рд╛рдБ |3.63 (-17%)

рд╣рдо рдПрдлрдПрдирд╡реА рдореЛрдб рдХреА рднреА рдЬрд╛рдВрдЪ рдХрд░реЗрдВрдЧреЗ, рд▓реЗрдХрд┐рди рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЬрдм рдХреЛрдИ рдЪрд┐рддреНрд░ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ рддреЛ рдпрд╣ рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

cc @gbalykov @nkaretnikov2

FYI рдХрд░реЗрдВ, рд╕реНрддрд░реАрдп рд╕рдВрдХрд▓рди рдЕрдм .NET рдХреЛрд░ рдХреЗ рд▓рд┐рдП рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╣реИ: https://github.com/dotnet/coreclr/pull/19525

@alpencolt , R2R рдЬреИрд╕реЗ AOT рд╕рдВрдХрд▓рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рд╕рдордп рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрдо рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рд╕рдордп рдореЗрдВ рд╕реБрдзрд╛рд░ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдХрдо рдЕрдиреБрдХреВрд▓рди рдХреЗ рд╕рд╛рде рдЕрдзрд┐рдХ рддреЗрдЬрд╝реА рд╕реЗ рдЭрдЯрдХреЗ рд╕реЗ рдЖрддрд╛ рд╣реИ, рдФрд░ рдПрдУрдЯреА рд╕рдВрдХрд▓рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдЬреЗрдЖрдИрдЯреА рдХреЗ рд▓рд┐рдП рдХрдо рд╣реЛрдЧрд╛ред рдХреБрдЫ рд╡рд┐рдзрд┐рдпрд╛рдБ рдкреВрд░реНрд╡-рдЬреЗрдирд░реЗрдЯ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИрдВ, рдЬреИрд╕реЗ рдХреБрдЫ рдЬреЗрдирд░рд┐рдХ, IL рд╕реНрдЯрдмреНрд╕ рдФрд░ рдЕрдиреНрдп рдЧрддрд┐рд╢реАрд▓ рд╡рд┐рдзрд┐рдпрд╛рдБред рдПрдУрдЯреА рд╕рдВрдХрд▓рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рднреА рдХреБрдЫ рдЬреЗрдирд░рд┐рдХ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдХреЗ рджреМрд░рд╛рди рдЯрд┐рдпрд░рд┐рдВрдЧ рд╕реЗ рд▓рд╛рднрд╛рдиреНрд╡рд┐рдд рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред

рдореИрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдмрдВрдж рдХрд░рдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реВрдВ, рдХреНрдпреЛрдВрдХрд┐ @kouvel рдХреА рдкреНрд░рддрд┐рдмрджреНрдзрддрд╛ рдХреЗ рд╕рд╛рде рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╢реАрд░реНрд╖рдХ рдореЗрдВ рдкреВрдЫрдирд╛ рд╣рд╛рд╕рд┐рд▓ рдХрд░ рд▓рд┐рдпрд╛ рд╣реИ: рдбреА рд▓реЛрдЧреЛрдВ рдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИ рдЪрд░реНрдЪрд╛ рдЬрд╛рд░реА рд░рдЦрдиреЗ рдФрд░/рдпрд╛ рдЕрдиреБрд░реЛрдзрд┐рдд рд╕реБрдзрд╛рд░ рдЬреИрд╕реЗ рдЕрдзрд┐рдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡рд┐рд╖рдпреЛрдВ рдкрд░ рдирдП рдореБрджреНрджреЛрдВ рдХреЛ рдЦреЛрд▓рдиреЗ рдХреЗ рд▓рд┐рдП, рдкреНрд░рд╢реНрди, рдпрд╛ рд╡рд┐рд╢реЗрд╖ рдЬрд╛рдВрдЪред рдЕрдЧрд░ рдХрд┐рд╕реА рдХреЛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕рдордп рд╕реЗ рдкрд╣рд▓реЗ рдмрдВрдж рд╣реЛ рдЧрдпрд╛ рд╣реИ рддреЛ рд╣рдореЗрдВ рдмрддрд╛рдПрдВред

@kouvel рдмрдВрдж рдореБрджреНрджреЗ рдкрд░ рдЯрд┐рдкреНрдкрдгреА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЦреЗрдж рд╣реИред рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рд╣реИ рдХрд┐ рдХреНрд░реЙрд╕рдЬреЗрди рдЬреИрд╕реЗ рдПрдУрдЯреА рд╕рдВрдХрд▓рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рдХреНрдпрд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЕрднреА рднреА рд╣реЙрдЯ-рд╕реНрдкреЙрдЯ рдХреЛрдб рдкрдереЛрдВ рдХреЗ рд▓рд┐рдП рджреВрд╕рд░реЗ рд╕реНрддрд░реАрдп рд╕рдВрдХрд▓рди рд╕реЗ рд▓рд╛рднрд╛рдиреНрд╡рд┐рдд рд╣реЛрдЧрд╛?

@ рдбреИрдХреНрд╕рд┐рдпрди-рдбреАрдмреАрдбрдмреНрд▓реНрдпреВ рд╣рд╛рдВ рдмрд╣реБрдд рдЬреНрдпрд╛рджрд╛; рд░рдирдЯрд╛рдЗрдо рдкрд░ рдЬреАрдЖрдИрдЯреА рдХреНрд░реЙрд╕-рдЕрд╕реЗрдВрдмрд▓реА рдЗрдирд▓рд╛рдЗрдирд┐рдВрдЧ (рдбреАрдПрд▓рдПрд╕ рдХреЗ рдмреАрдЪ) рдХрд░ рд╕рдХрддрд╛ рд╣реИ; рд░рдирдЯрд╛рдЗрдо рд╕реНрдерд┐рд░рд╛рдВрдХ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╢рд╛рдЦрд╛ рдЙрдиреНрдореВрд▓рди ( readonly static ); рдЖрджрд┐

@benaadams рдФрд░ рдПрдХ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ AOT рдХрдВрдкрд╛рдЗрд▓рд░ рдирд╣реАрдВ рдХрд░ рд╕рдХрд╛?

рдореБрдЭреЗ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдЬрд╛рдирдХрд╛рд░реА https://blogs.msdn.microsoft.com/dotnet/2018/08/02/tiered-compilation-preview-in-net-core-2-1/ рдкрд░ рдорд┐рд▓реА:

рдкреВрд░реНрд╡-рд╕рдВрдХрд▓рд┐рдд рдЫрд╡рд┐рдпреЛрдВ рдореЗрдВ рд╡рд░реНрдЬрдирд┐рдВрдЧ рдмрд╛рдзрд╛рдПрдВ рдФрд░ рд╕реАрдкреАрдпреВ рдирд┐рд░реНрджреЗрд╢ рдмрд╛рдзрд╛рдПрдВ рд╣реИрдВ рдЬреЛ рдХреБрдЫ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЕрдиреБрдХреВрд▓рди рдХреЛ рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рдХрд░рддреА рд╣реИрдВред рдЗрди рдЫрд╡рд┐рдпреЛрдВ рдореЗрдВ рдХрд┐рд╕реА рднреА рд╡рд┐рдзрд┐ рдХреЗ рд▓рд┐рдП рдЬрд┐рд╕реЗ рдЕрдХреНрд╕рд░ рдЯрд┐рдпрд░рдб рд╕рдВрдХрд▓рди рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЗрдЖрдИрдЯреА рд╕реЗ рдкреГрд╖реНрдарднреВрдорд┐ рдереНрд░реЗрдб рдкрд░ рдЕрдиреБрдХреВрд▓рд┐рдд рдХреЛрдб рдмрдирд╛рдиреЗ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдкреВрд░реНрд╡-рд╕рдВрдХрд▓рд┐рдд рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдЧрд╛ред

рд╣рд╛рдБ, рдпрд╣ "рдПрдХ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдбрд┐рдЬрд╝рд╛рдЗрди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ AOT" рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИред рдореИрдВ

рдкреВрд░реНрд╡-рд╕рдВрдХрд▓рд┐рдд рдЫрд╡рд┐рдпреЛрдВ рдореЗрдВ рд╡рд░реНрдЬрдирд┐рдВрдЧ рдмрд╛рдзрд╛рдПрдВ рдФрд░ рд╕реАрдкреАрдпреВ рдирд┐рд░реНрджреЗрд╢ рдмрд╛рдзрд╛рдПрдВ рд╣реИрдВ рдЬреЛ рдХреБрдЫ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЕрдиреБрдХреВрд▓рди рдХреЛ рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рдХрд░рддреА рд╣реИрдВред

рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╡реЗ рддрд░реАрдХреЗ рд╣реИрдВ рдЬреЛ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдЖрдВрддрд░рд┐рдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдПрдУрдЯреА рдХрдВрдкрд╛рдЗрд▓рд░ (рдХреНрд░реЙрд╕рдЬреЗрди) рд╕рд┐рд░реНрдл рдПрд╕рдПрд╕рдИ 2 рдХреЛ x86/x64 рдкрд░ рдХреЛрдбрдЬрди рд▓рдХреНрд╖реНрдп рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдирддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдЖрдВрддрд░рд┐рдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реА рд╕рднреА рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдХреНрд░реЙрд╕рдЬреЗрди рджреНрд╡рд╛рд░рд╛ рдЦрд╛рд░рд┐рдЬ рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдЬреЗрдЖрдИрдЯреА рджреНрд╡рд╛рд░рд╛ рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдЬреЛ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдЬрд╛рдирдХрд╛рд░реА рдЬрд╛рдирддрд╛ рд╣реИред

рдФрд░ рдПрдХ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдПрдУрдЯреА рдХрдВрдкрд╛рдЗрд▓рд░ рдирд╣реАрдВ рдХрд░ рд╕рдХрд╛?

рдПрдУрдЯреА рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЛ рд▓рд┐рдВрдХ-рдЯрд╛рдЗрдо рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝реЗрд╢рди (рдХреНрд░реЙрд╕-рдЕрд╕реЗрдВрдмрд▓реА рдЗрдирд▓рд╛рдЗрдирд┐рдВрдЧ рдХреЗ рд▓рд┐рдП) рдФрд░ рдкреНрд░реЛрдлрд╛рдЗрд▓-рдЧрд╛рдЗрдбреЗрдб рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝реЗрд╢рди (рд░рдирдЯрд╛рдЗрдо рд╕реНрдерд┐рд░рд╛рдВрдХ рдХреЗ рд▓рд┐рдП) рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдЗрд╕ рдмреАрдЪ, рдПрдУрдЯреА рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЛ рд╕рд┐рдо рдХреЛрдб рдХреЗ рд▓рд┐рдП рдмрд┐рд▓реНрдб-рдЯрд╛рдЗрдо рдкрд░ "рдмреЙрдЯрдо-рд▓рд╛рдЗрди" рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдЬрд╛рдирдХрд╛рд░реА (рдЬреИрд╕реЗ -mavx2 gcc/clang рдореЗрдВ) рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред

рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╡реЗ рддрд░реАрдХреЗ рд╣реИрдВ рдЬреЛ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдЖрдВрддрд░рд┐рдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдПрдУрдЯреА рдХрдВрдкрд╛рдЗрд▓рд░ (рдХреНрд░реЙрд╕рдЬреЗрди) рд╕рд┐рд░реНрдл рдПрд╕рдПрд╕рдИ 2 рдХреЛ x86/x64 рдкрд░ рдХреЛрдбрдЬрди рд▓рдХреНрд╖реНрдп рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдирддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдЖрдВрддрд░рд┐рдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реА рд╕рднреА рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдХреНрд░реЙрд╕рдЬреЗрди рджреНрд╡рд╛рд░рд╛ рдЦрд╛рд░рд┐рдЬ рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдЬреЗрдЖрдИрдЯреА рджреНрд╡рд╛рд░рд╛ рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдЬреЛ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдЬрд╛рдирдХрд╛рд░реА рдЬрд╛рдирддрд╛ рд╣реИред

рдХрд┐рд╕рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛? рдореИрдВ рдпрд╣рд╛рдВ рдХрд╛рдлреА рдлреЙрд▓реЛ рдирд╣реАрдВ рдХрд░рддрд╛ред рдПрдУрдЯреА рдХрдВрдкрд╛рдЗрд▓рд░ рдЗрдВрдЯреНрд░рд┐рдирд┐рдХреНрд╕ рдХреЛ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХреНрдпреЛрдВ рдХрд░реЗрдЧрд╛?

рдФрд░ рдПрдХ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдПрдУрдЯреА рдХрдВрдкрд╛рдЗрд▓рд░ рдирд╣реАрдВ рдХрд░ рд╕рдХрд╛?

рдПрдУрдЯреА рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЛ рд▓рд┐рдВрдХ-рдЯрд╛рдЗрдо рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝реЗрд╢рди (рдХреНрд░реЙрд╕-рдЕрд╕реЗрдВрдмрд▓реА рдЗрдирд▓рд╛рдЗрдирд┐рдВрдЧ рдХреЗ рд▓рд┐рдП) рдФрд░ рдкреНрд░реЛрдлрд╛рдЗрд▓-рдЧрд╛рдЗрдбреЗрдб рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝реЗрд╢рди (рд░рдирдЯрд╛рдЗрдо рд╕реНрдерд┐рд░рд╛рдВрдХ рдХреЗ рд▓рд┐рдП) рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдЗрд╕ рдмреАрдЪ, рдПрдУрдЯреА рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЛ рд╕рд┐рдо рдХреЛрдб рдХреЗ рд▓рд┐рдП рдмрд┐рд▓реНрдб-рдЯрд╛рдЗрдо рдкрд░ "рдмреЙрдЯрдо-рд▓рд╛рдЗрди" рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдЬрд╛рдирдХрд╛рд░реА (рдЬреИрд╕реЗ рдЬреАрд╕реАрд╕реА/рдХреНрд▓реИрдВрдЧ рдореЗрдВ -mavx2) рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред

рд╣рд╛рдБ, рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдХрд╣рд╛, "рдПрдХ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ AOT рдХрдВрдкрд╛рдЗрд▓рд░ред" рдореИрдВ

@masonwheeler рдЕрд▓рдЧ рдкрд░рд┐рджреГрд╢реНрдп; рдХреНрд░реЙрд╕рдЬреЗрди рдПрдУрдЯреА рд╣реИ рдЬреЛ рдЬреАрдЖрдИрдЯреА рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рдкреВрд░реНрдг рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдкреБрдирд░реНрд╕рдВрдпреЛрдЬрди рдФрд░ рдкреБрдирд░реНрд╡рд┐рддрд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдмрд┐рдирд╛ рдбреАрдПрд▓рдПрд╕ рдХреА рд╕рд░реНрд╡рд┐рд╕рд┐рдВрдЧ/рдкреИрдЪрд┐рдВрдЧ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдпрд╣ Tier0 рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмреЗрд╣рддрд░ рдХреЛрдб рдЬрдирд░реЗрд╢рди рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рдФрд░ Tier1 рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рддреЗрдЬрд╝ рд╕реНрдЯрд╛рд░реНрдЯ-рдЕрдк рдХреЗ рд╕рд╛рде; рд▓реЗрдХрд┐рди рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдиреНрдпреВрдЯреНрд░рд▓ рдирд╣реАрдВ рд╣реИред

Tier0, crossgen рдФрд░ Tier1 рд╕рднреА рдПрдХ рд╕рд╛рде рдорд┐рд▓рдХрд░ coreclr . рдореЗрдВ рдПрдХ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ

рдХреНрд░реЙрд╕-рдЕрд╕реЗрдВрдмрд▓реА рдЗрдирд▓рд╛рдЗрди (рдиреЙрди-рдЬрд┐рдЯ) рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдПрдХ рд╕реНрдерд┐рд░ рд░реВрдк рд╕реЗ рд▓рд┐рдВрдХ рдХреА рдЧрдИ рдПрдХрд▓ рдлрд╝рд╛рдЗрд▓ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдХреЗ рд╕рдВрдХрд▓рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА рдФрд░ рдХрд┐рд╕реА рднреА рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЛ рдкреИрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдкреВрд░реНрдг рдкреБрдирд░реНрд╕рдВрдХрд▓рди рдФрд░ рдкреБрди: рд╡рд┐рддрд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рд╕рд╛рде рд╣реА рд╕рд╛рде рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдХреЛ рд▓рдХреНрд╖рд┐рдд рдХрд░рдирд╛ (рдХреМрди рд╕рд╛ рд╕рдВрд╕реНрдХрд░рдг) SSE, Avx рдЖрджрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП; рд╕рднреА рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдХрдо рд╕рд╛рдорд╛рдиреНрдп рдпрд╛ рдЙрддреНрдкрд╛рджрди рд╕рдВрд╕реНрдХрд░рдг?)

corert рдЖрд╡реЗрджрди рдХреА рдЗрд╕ рд╢реИрд▓реА рдХреЛ рдПрдУрдЯреА рдХрд░реЗрдЧрд╛ред

рд╣рд╛рд▓рд╛рдБрдХрд┐; рдХреБрдЫ рдкреНрд░рдХрд╛рд░ рдХреА рд╢рд╛рдЦрд╛ рдЙрдиреНрдореВрд▓рди рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдХрд┐ рдЬрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рд╡реИрдХрд▓реНрдкрд┐рдХ рдкрдереЛрдВ рдХреЗ рд▓рд┐рдП рдмрдбрд╝реА рдорд╛рддреНрд░рд╛ рдореЗрдВ рдЕрддрд┐рд░рд┐рдХреНрдд рдПрдПрд╕рдПрдо рдкреАрдврд╝реА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА; рдФрд░ рд╕рд╣реА рдкреЗрдбрд╝ рдХрд╛ рд░рдирдЯрд╛рдЗрдо рдкреИрдЪрд┐рдВрдЧ

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдХреЛрдИ рднреА рдХреЛрдб (рдЬрд╣рд╛рдВ Tier1 Jit рд╕рднреА if s рдХреЛ рд╣рдЯрд╛ рджреЗрдЧрд╛)

readonly static _numProcs = Environment.ProcessorCount;

public void DoThing()
{
    if (_numProcs == 1) 
    {
       // Single proc path
    }
    else if (_numProcs == 2) 
    {
       // Two proc path
    }
    else
    {
       // Multi proc path
    }
}

@рдмреЗрдирд╛рджрдореНрд╕

рдХреНрд░реЙрд╕-рдЕрд╕реЗрдВрдмрд▓реА рдЗрдирд▓рд╛рдЗрди (рдиреЙрди-рдЬрд┐рдЯ) рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдПрдХ рд╕реНрдерд┐рд░ рд░реВрдк рд╕реЗ рд▓рд┐рдВрдХ рдХреА рдЧрдИ рдПрдХрд▓ рдлрд╝рд╛рдЗрд▓ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдХреЗ рд╕рдВрдХрд▓рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА рдФрд░ рдХрд┐рд╕реА рднреА рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЛ рдкреИрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдкреВрд░реНрдг рдкреБрдирд░реНрд╕рдВрдХрд▓рди рдФрд░ рдкреБрди: рд╡рд┐рддрд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рд╕рд╛рде рд╣реА рд╕рд╛рде рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдХреЛ рд▓рдХреНрд╖рд┐рдд рдХрд░рдирд╛ (рдХреМрди рд╕рд╛ рд╕рдВрд╕реНрдХрд░рдг) SSE, Avx рдЖрджрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП; рд╕рднреА рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдХрдо рд╕рд╛рдорд╛рдиреНрдп рдпрд╛ рдЙрддреНрдкрд╛рджрди рд╕рдВрд╕реНрдХрд░рдг?)

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

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

рдФрд░ рдХрдВрдкрд╛рдЗрд▓рд░, рдЬреЛ рд╕реНрдерд╛рдиреАрдп рд╕рд┐рд╕реНрдЯрдо рдкрд░ рд░рд╣рддрд╛ рд╣реИ, AOT рдкреНрд░рдмрдВрдзрд┐рдд рдХреЛрдб рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рддрд╛ рд╣реИ...

рдпрд╣ рдкрд┐рдЫрд▓рд╛ рдПрдирдЬреАрдПрди рдореЙрдбрд▓ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдкреВрд░реНрдг рдврд╛рдВрдЪреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ; рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдЗрд╕рдиреЗ рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЛрдб рдХреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛрдб рдореЗрдВ рдЗрдирд▓рд╛рдЗрди рдХрд░рдиреЗ рд╡рд╛рд▓реА рдПрдХрд▓ рдЕрд╕реЗрдВрдмрд▓реА рдмрдирд╛рдИ рд╣реИ? .NET Core 2.1 рдкрд░ рдЪрд▓рдиреЗ рд╡рд╛рд▓реЗ Bing.com рдореЗрдВ рджреЛ рджреГрд╖реНрдЯрд┐рдХреЛрдгреЛрдВ рдХреЗ рдмреАрдЪ рдЕрдВрддрд░ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛! рдмреНрд▓реЙрдЧ рднреЗрдЬрд╛

рддреИрдпрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЫрд╡рд┐рдпрд╛рдБ

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

@masonwheeler AOT .Net рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреА рдЧрддрд┐рд╢реАрд▓ рдкреНрд░рдХреГрддрд┐ рдХреЗ рдХрд╛рд░рдг рдкреВрд░реНрдг .Net рдореЗрдВ рд╡рд┐рдкрд░реАрдд рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП .Net рдореЗрдВ рд╡рд┐рдзрд┐ рдирд┐рдХрд╛рдпреЛрдВ рдХреЛ рдХрд┐рд╕реА рднреА рд╕рдордп рдПрдХ рдкреНрд░реЛрдлрд╛рдЗрд▓рд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдХрдХреНрд╖рд╛рдУрдВ рдХреЛ рд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдпрд╛ рдкреНрд░рддрд┐рдмрд┐рдВрдм рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдЗрдВрдЯрд░рдСрдк рдЬреИрд╕реА рдЪреАрдЬреЛрдВ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХрддрд╛рдиреБрд╕рд╛рд░ рд░рдирдЯрд╛рдЗрдо рджреНрд╡рд╛рд░рд╛ рдирдпрд╛ рдХреЛрдб рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ - рдЗрд╕рд▓рд┐рдП рдЗрдВрдЯрд░рдкреНрд░реЛрд╕реЗрдбрд░рд▓ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдЬрд╛рдирдХрд╛рд░реА рд╕рд░реНрд╡реЛрддреНрддрдо рд░реВрдк рд╕реЗ рдкреНрд░рддрд┐рдмрд┐рдВрдмрд┐рдд рд╣реЛрддреА рд╣реИ рдПрдХ рдХреНрд╖рдгрд┐рдХ рд╕реНрдерд┐рддрд┐ рдПрдХ рдЪрд▓ рд░рд╣реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ред .Net рдореЗрдВ рдХреЛрдИ рднреА рдЕрдВрддрд░-рдкреНрд░рдХреНрд░рд┐рдпрд╛рддреНрдордХ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдпрд╛ рдЕрдиреБрдХреВрд▓рди (рдЗрдирд▓рд╛рдЗрдирд┐рдВрдЧ рд╕рд╣рд┐рдд) рд░рдирдЯрд╛рдЗрдо рдХреЗ рджреМрд░рд╛рди рдкреВрд░реНрд╡рд╡рдд рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдПрдУрдЯреА рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдЬрдм рдПрдУрдЯреА рд╕рдордп рдФрд░ рд░рдирдЯрд╛рдЗрдо рдХреЗ рдмреАрдЪ рдмрджрд▓ рд╕рдХрдиреЗ рд╡рд╛рд▓реА рдЪреАрдЬреЛрдВ рдХрд╛ рд╕реЗрдЯ рдЫреЛрдЯрд╛ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдРрд╕реЗ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХрд╛ рдкреНрд░рднрд╛рд╡ рд╕реНрдерд╛рдиреАрдпрдХреГрдд рд╣реЛрддрд╛ рд╣реИ, рддрд╛рдХрд┐ рдПрдУрдЯреА рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝реЗрд╢рди рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╡рд┐рд╕реНрддреГрдд рджрд╛рдпрд░рд╛ рдЙрди рдЪреАрдЬреЛрдВ рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ рдЬреЛ рд╣рдореЗрд╢рд╛ рд╕рдЪ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП (рдпрд╛ рд╢рд╛рдпрдж рдПрдХ рдЫреЛрдЯреА рд╕реА рд╣реЛ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛)ред

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

рдХреНрд░реЙрд╕рдЬреЗрди рдХреЗ рджрд╛рдпрд░реЗ рдХреЛ рдХрдИ рдЕрд╕реЗрдВрдмрд▓реА рдореЗрдВ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдХрд╛рдо рдЪрд▓ рд░рд╣рд╛ рд╣реИ рддрд╛рдХрд┐ рд╣рдо рдПрдУрдЯреА рд╕рднреА рдореБрдЦреНрдп рдврд╛рдВрдЪреЗ (рдпрд╛ рд╕рднреА рдПрдПрд╕рдкреАрдиреЗрдЯ рдЕрд╕реЗрдВрдмрд▓реА) рдХреЛ рдПрдХ рдмрдВрдбрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рдХрд░ рд╕рдХреЗрдВред рд▓реЗрдХрд┐рди рдпрд╣ рдХреЗрд╡рд▓ рдЗрд╕рд▓рд┐рдП рд╡реНрдпрд╡рд╣рд╛рд░реНрдп рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЬрдм рдЪреАрдЬреЗрдВ рдмрджрд▓рддреА рд╣реИрдВ рддреЛ рдХреЛрдбрдЬреЗрди рдХреЛ рдлрд┐рд░ рд╕реЗ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЬрд┐рдЯ рд╣реИред

@AndyAyersMS рдореИрдВрдиреЗ рдХрднреА рдирд╣реАрдВ рдорд╛рдирд╛ рд╣реИ рдХрд┐ .NET AOT рд╕рдорд╛рдзрд╛рди "рд╢реБрджреНрдз AOT-only" рд╕рдорд╛рдзрд╛рди рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдареАрдХ рдЙрдиреНрд╣реАрдВ рдХрд╛рд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдЬрд┐рдирдХрд╛ рдЖрдк рдпрд╣рд╛рдБ рд╡рд░реНрдгрди рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдЖрд╡рд╢реНрдпрдХрддрд╛рдиреБрд╕рд╛рд░ рдирдпрд╛ рдХреЛрдб рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП JIT рдХрд╛ рд╣реЛрдирд╛ рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред рд▓реЗрдХрд┐рди рдЬрд┐рди рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рд╡реЗ рдЕрд▓реНрдкрдордд рдореЗрдВ рд╣реИрдВ, рдФрд░ рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЯрд╛рдЗрдк рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд▓рд┐рдП рдПрдВрдбрд░реНрд╕ рд╣реЗрдЬрд▓реНрд╕рдмрд░реНрдЧ рдХреЗ рдирд┐рдпрдо рдХреЛ рдпрд╣рд╛рдВ рд▓рд╛рднрдХрд╛рд░реА рд░реВрдк рд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

рдЬрд╣рд╛рдВ рд╕рдВрднрд╡ рд╣реЛ рд╕реНрдерд┐рд░, рдЖрд╡рд╢реНрдпрдХ рд╣реЛрдиреЗ рдкрд░ рдЧрддрд┐рд╢реАрд▓ред

рд╕рд┐рд╕реНрдЯрдо рд╕реЗ.рд▓рд┐рдВрдХ.рдПрдХреНрд╕рдкреНрд░реЗрд╢рди
рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдЯреАрдбреАрд▓реЗрдЧреЗрдЯ рд╕рдВрдХрд▓рди (рдмреВрд▓ рд╡рд░реАрдпрддрд╛ рд╡реНрдпрд╛рдЦреНрдпрд╛);

рдХреНрдпрд╛ рддрд░рдЬреАрд╣реА рд╕рдВрдХрд▓рди рдХрд╛рдо рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦрддрд╛ рд╣реИ рдпрджрд┐ рд╡рд░реАрдпрддрд╛ рд╡реНрдпрд╛рдЦреНрдпрд╛ рд╕рддреНрдп рд╣реИ?

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

omajid picture omajid  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

EgorBo picture EgorBo  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

aggieben picture aggieben  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

jchannon picture jchannon  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

Timovzl picture Timovzl  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ