рдХреИрд╕реЗ JIT рд╣рдорд╛рд░реЗ C # рдХреЛрдб (рдЙрддреНрддрд░рд╛рдзрд┐рдХрд╛рд░) рдХреЛ рдмрддрд╛рддрд╛ рд╣реИ

рд╕рдВрдХрд▓рдХ рдореЗрдВ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЕрдиреБрдХреВрд▓рди рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИред рдпрд╣ рди рдХреЗрд╡рд▓ рдХреЙрд▓ рд╕реЗ рдУрд╡рд░рд╣реЗрдб рдХреЛ рд╣рдЯрд╛рддрд╛ рд╣реИ, рдмрд▓реНрдХрд┐ рдЕрдиреНрдп рдЕрдиреБрдХреВрд▓рди рдХреЗ рд▓рд┐рдП рдХрдИ рд╕рдВрднрд╛рд╡рдирд╛рдПрдВ рднреА рдЦреЛрд▓рддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдирд┐рд░рдВрддрд░ рддрд╣, рдореГрдд рдХреЛрдб рдЙрдиреНрдореВрд▓рди, рдЖрджрд┐ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдХрднреА-рдХрднреА inlining рдХреЙрд▓рд┐рдВрдЧ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЖрдХрд╛рд░ рдореЗрдВ рдХрдореА рдХреА рдУрд░ рдЬрд╛рддрд╛ рд╣реИ! рдореИрдВрдиреЗ рдХрдИ рд▓реЛрдЧреЛрдВ рд╕реЗ рдкреВрдЫрд╛ рдХрд┐ рдХреНрдпрд╛ рд╡реЗ рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ C # рдореЗрдВ рдХрд╛рд░реНрдп рдХреМрди рд╕реЗ рдирд┐рдпрдореЛрдВ рдореЗрдВ рдирд┐рд╣рд┐рдд рд╣реИрдВ, рдФрд░ рдЕрдзрд┐рдХрд╛рдВрд╢ рдиреЗ рдЙрддреНрддрд░ рджрд┐рдпрд╛ рдХрд┐ JIT IL рдХреЛрдб рдХреЗ рдЖрдХрд╛рд░ рдХреЛ рджреЗрдЦрддрд╛ рд╣реИ рдФрд░ рдХреЗрд╡рд▓ 32 рдмрд╛рдЗрдЯреНрд╕ рдХреЗ рдЖрдХрд╛рд░ рдХреЗ рд╕рд╛рде рдЫреЛрдЯреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдмрддрд╛рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдореИрдВрдиреЗ рдЗрд╕ рдкреЛрд╕реНрдЯ рдХреЛ рдЗрд╕ рддрд░рд╣ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХреА рдорджрдж рд╕реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╡рд┐рд╡рд░рдг рдХрд╛ рдЦреБрд▓рд╛рд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рд┐рдЦрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛, рдЬреЛ рдПрдХ рдмрд╛рд░ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдореЗрдВ рдХрдИ рдЖрдВрдХрдбрд╝реЗ рджрд┐рдЦрд╛рдПрдЧрд╛:




рдХреНрдпрд╛ рдЖрдкрдХреЛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡реЙрд▓реНрдпреВрдо рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЛ рдХреЙрд▓ рдпрд╣рд╛рдВ рдЗрдирд▓реЗрдЯ рд╣реЛрдЧрд╛ ? рдмреЗрд╢рдХ рдирд╣реАрдВред рдпрд╣ рдмрд╣реБрдд рдмрдбрд╝рд╛ рд╣реИ, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╣реИрд╡реАрд╡реЗрдЯ рдереНрд░реЛ рдХреЗ рдХрд╛рд░рдг рдирдП рдСрдкрд░реЗрдЯрд░, рдЬреЛ рдПрдХ рдмреЛрд▓реНрдб рдХреЛрдбрдЧреЗрди рдХреА рдУрд░ рд▓реЗ рдЬрд╛рддреЗ рд╣реИрдВред рдЖрдЗрдП Disasmo рдореЗрдВ рдЬрд╛рдБрдЪ рдХрд░реЗрдВ:



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

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



рдпреЗ рдЕрд╡рд▓реЛрдХрди Complus_JitDump (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдбрд┐рд╕рд╛рдореЛ рдореЗрдВ) рд╕реЗ рд▓реЙрдЧ рдореЗрдВ рджреЗрдЦреЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ : рдЗрди



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

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

рд╡реИрд╕реЗ, рдХреНрдпрд╛ рдЖрдкрдиреЗ рдЗрд╕ рдЯреНрд░рд┐рдХ рдкрд░ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рд╣реИ? "

if ((value - 'A') > ('Z' - 'A'))

рдпрд╣ рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдиреБрдХреВрд▓рд┐рдд рд╕рдВрд╕реНрдХрд░рдг рд╣реИ:

if (value < 'A' || value > 'Z')

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

рдореЗрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рд░реЛрд╕рд▓рд┐рди : github.com/dotnet/runtime/issues/13347
рдореЗрдВ рдкреАрдЖрд░ рдХреА RyuJIT (рдореЗрд░реА рдЕрдЬреАрдм рдкреНрд░рдпрд╛рд╕): github.com/dotnet/coreclr/pull/27480

рд╡рд╣рд╛рдБ рдореИрдВ рдХреНрдпреЛрдВ рдпрд╣ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╡рд░реНрдгрд┐рдд рдЬреАрдд рдореЗрдВ рди рдХреЗрд╡рд▓ рд▓реЗрдХрд┐рди рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░ рд╕реА # рд╕рдВрдХрд▓рдХ рдореЗрдВред

рдЗрдирд▓рд╛рдЗрдирд┐рдВрдЧ рдФрд░ рд╡рд░реНрдЪреБрдЕрд▓ рддрд░реАрдХреЗ


рдпрд╣рд╛рдВ рд╕рдм рдХреБрдЫ рд╕реНрдкрд╖реНрдЯ рд╣реИ, рдЖрдк рдЗрдирд▓рд╛рдЗрди рдХреЛ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдирд╣реАрдВ рджреЗ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╕рдВрдХрд▓рди рдЪрд░рдг рдореЗрдВ рдХреЛрдИ рдЬрд╛рдирдХрд╛рд░реА рдирд╣реАрдВ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрджрд┐ рдкреНрд░рдХрд╛рд░ рдпрд╛ рд╡рд┐рдзрд┐ рдХреЛ рд╕реАрд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рддреЛ рдХреНрдпреЛрдВ рдирд╣реАрдВ ред

рдЕрдкрд╡рд╛рдж рдЫреЛрдбрд╝рдирд╛ рдФрд░ рдлреЗрдВрдХрдирд╛


рдпрджрд┐ рдХреЛрдИ рд╡рд┐рдзрд┐ рдХрднреА рднреА рдорд╛рди рдирд╣реАрдВ рд▓реМрдЯрд╛рддреА рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣ рдмрд╕ throw new...), рддреЛ рдРрд╕реЗ рддрд░реАрдХреЗ рд╕реНрд╡рддрдГ рд╣реА рдереНрд░реЛ-рд╣реЗрд▓реНрдкрд░реНрд╕ рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рдЗрдирд▓рд╛рдЗрди рдирд╣реАрдВ рд╣реЛрдВрдЧреЗред рдпрд╣ throw newрдХрд╛рд░рдкреЗрдЯ рдХреЗ рдиреАрдЪреЗ рд╕реЗ рдЬрдЯрд┐рд▓ рдХреЛрдбрдЬреЗрди рдХреЛ рдмрджрд▓рдиреЗ рдФрд░ рдЗрдирд▓рд╛рдЗрдирд░ рдХреЛ рдЦреБрд╢ рдХрд░рдиреЗ рдХрд╛ рдРрд╕рд╛ рддрд░реАрдХрд╛ рд╣реИред

рдЗрдирд▓рд╛рдЗрдирд┐рдВрдЧ рдФрд░ [рдПрдЧреНрд░реЗрд╕рд┐рд╡ рдЗрдирд▓рд╛рдЗрдирд┐рдВрдЧ] рд╡рд┐рд╢реЗрд╖рддрд╛


рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЖрдк рдЕрдиреБрд╢рдВрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдЗрдирд▓рд╛рдЗрди рдЗрдирд▓рд╛рдЗрди рд╡рд┐рдзрд┐ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдкрдХреЛ рджреЛ рдХрд╛рд░рдгреЛрдВ рд╕реЗ рдмреЗрд╣рдж рд╕рд╛рд╡рдзрд╛рди рд░рд╣рдирд╛ рд╣реЛрдЧрд╛:

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

рдЗрдирд▓рд╛рдЗрдирд┐рдВрдЧ рдФрд░ рдЧрддрд┐рд╢реАрд▓ рддрд░реАрдХреЗ


рд╡рд░реНрддрдорд╛рди рдореЗрдВ, рдРрд╕реЗ рддрд░реАрдХреЗ рдЗрдирд▓рд╛рдЗрди рдирд╣реАрдВ рд╣реИрдВ рдФрд░ рд╕реНрд╡рдпрдВ рдХреЛ рдЗрдирд▓рд╛рдЗрди рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ: github.com/dotnet/runtime/issues/34500

рдореЗрд░реА рд╣реЗрдпреБрд░рд┐рд╕реНрдЯрд┐рдХ рд▓рд┐рдЦрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢


рд╣рд╛рд▓ рд╣реА рдореЗрдВ, рдореИрдВрдиреЗ рдРрд╕реЗ рдЕрд╡рд╕рд░ рдкрд░ рдпрд╣рд╛рдБ рдорджрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рдЦреБрдж рдХреЗ рдЙрддреНрддрд░рд╛рдзрд┐рдХрд╛рд░ рдХреЛ рд▓рд┐рдЦрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА: рдкрд┐рдЫрд▓реА рдмрд╛рд░



рдПрдХ рдкреЛрд╕реНрдЯ рдореЗрдВ рдореИрдВрдиреЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдерд╛ рдХрд┐ рдореИрдВрдиреЗ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдирд┐рд░рдВрддрд░ рддрд╛рд░реЛрдВ рдХреА рд▓рдВрдмрд╛рдИ рдХреА RyuJIT рдЧрдгрдирд╛ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд┐рдпрд╛ рд╣реИ ( "Hello".Length -> 5рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдЕрдЧрд░ zainlaynit), рдФрд░ рдЗрд╕рд▓рд┐рдП, рдКрдкрд░ рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рдореЗрдВ ^ ValidateрдореЗрдВ Test, рд╣рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВред рд╕рдВрдкреВрд░реНрдг рд╕реНрдерд┐рддрд┐ / рд╢рд╛рдЦрд╛ рдХреЛ рд╣рдЯрд╛рдиреЗ if ("hello".Length > 10)рдореЗрдВ if (5 > 10)рдЬреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рд╣реИ, рдЙрд╕рдореЗрдВ рдХреНрдпрд╛ рдЕрдиреБрдХреВрд▓рд┐рдд рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЗрдирд▓рд╛рдЗрдирд░ рдиреЗ рдЗрдирд▓рд╛рдЗрди рд╕реЗ рдЗрдирдХрд╛рд░ рдХрд░ рджрд┐рдпрд╛ Validate:



рдФрд░ рдпрд╣рд╛рдВ рдореБрдЦреНрдп рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЕрднреА рддрдХ рдХреЛрдИ рднреА рдЕрдиреБрдорд╛рди рдирд╣реАрдВ рд╣реИ System.String::get_LengthрдЬреЛ рдХрд┐ рдЬреАрдЯ рдХреЛ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдПрдХ рдирд┐рд░рдВрддрд░ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╕реЗ рдЧреБрдЬрд░ рд░рд╣реЗ рд╣реИрдВ , рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдХреЙрд▓реНрд╡рд░реНрдЯ-рдХреЙрд▓ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдирд┐рд░рдВрддрд░рддрд╛ рдореЗрдВ рдврд╣ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдкреВрд░реА рд╢рд╛рдЦрд╛ рдХреЛ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЕрд╕рд▓ рдореЗрдВ, рдореЗрд░реА рд╣реЗрдпреБрд░рд┐рд╕реНрдЯрд┐рдХрдФрд░ рдЗрд╕ рдЕрд╡рд▓реЛрдХрди рдХреЛ рдЬреЛрдбрд╝рддрд╛ рд╣реИ (рдХреЗрд╡рд▓ рдорд╛рдЗрдирд╕ рдпрд╣ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рд╕рднреА рдХреЙрд▓рд╡рд╛рд░реНрдЯреНрд╕ рдХреЛ рд╣рд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдЬреЛ рдмрд╣реБрдд рддреЗрдЬрд╝ рдирд╣реАрдВ рд╣реИ)ред

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

All Articles