рд╢реБрдн рджрд┐рди, рд╣реЗрдмреНрд░!

рдХрдИ рдЕрдиреБрднрд╡рд╣реАрди рдбреЗрд╡рд▓рдкрд░реНрд╕ рд╣рдореЗрд╢рд╛ рдпрд╣ рдирд╣реАрдВ рдЬрд╛рдирддреЗ рдФрд░ рд╕рдордЭрддреЗ рд╣реИрдВ рдХрд┐ рдЙрдирдХреЗ рдХреЛрдб рдХреЗ рдкрд░реНрджреЗ рдХреЗ рдкреАрдЫреЗ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИред рдЕрдм рд╣рдо рдорд╣рддреНрд╡рдкреВрд░реНрдг рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреА рдкреИрдХрд┐рдВрдЧ рдФрд░ рдЕрдирдкреИрдХрд┐рдВрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗ (рд░реВрд╕реА рдореЗрдВ, рдпрд╣ рднрдпрд╛рдирдХ рд▓рдЧрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП "рдмреЙрдХреНрд╕рд┐рдВрдЧ рдФрд░ рдЕрдирдмреЙрдХреНрд╕рд┐рдВрдЧ рдореВрд▓реНрдп рдкреНрд░рдХрд╛рд░")ред
рдмрд┐рд▓реНрд▓реА рдХреЗ рдиреАрдЪреЗ рд░рдирдЯрд╛рдЗрдо рдХрд╛ рдПрдХ рдЫреЛрдЯрд╛ рдЙрджрд╛рд╣рд░рдг рдФрд░ рдорд╛рдк рд╣реИред
рдмреЙрдХреНрд╕рд┐рдВрдЧ рдХреНрдпрд╛ рд╣реИ?
рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВред рдорд╣рддреНрд╡рдкреВрд░реНрдг рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ (рдорд╛рди рдкреНрд░рдХрд╛рд░) рдФрд░ рд╕рдВрджрд░реНрдн (рд╕рдВрджрд░реНрдн рдкреНрд░рдХрд╛рд░) рд╣реИрдВред рдорд╣рддреНрд╡рдкреВрд░реНрдг рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕ рд╕реНрд╡рдпрдВ рдореВрд▓реНрдп рдХреЛ рд╕реНрдЯреЛрд░ рдХрд░рддреЗ рд╣реИрдВ (рдзрдиреНрдпрд╡рд╛рдж, рдХреИрдк!), рд╕рдВрджрд░реНрдн рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕ - рдореЗрдореЛрд░реА рдореЗрдВ рдЙрд╕ рд╕реЗрдХреНрд╢рди рдХрд╛ рд▓рд┐рдВрдХ рдЬрд╣рд╛рдВ рдпрд╣ рдорд╛рди рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реЛрддрд╛ рд╣реИред
int valType = 15;
рдпрд╣ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рд╣реИред рд╡реИрд░рд┐рдПрдмрд▓ рд╡реИрд▓реНрдпреВ рдХрд╛ рдорд╛рди рд╕реНрдЯреИрдХ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдХрдИ рдорд╛рдирдХ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИрдВ (рдЗрдВрдЯ, рдмрд╛рдЗрдЯ, рд▓реЙрдиреНрдЧ, рдмреВрд▓, рдЖрджрд┐)ред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЕрдЧрд░ рд╣рдо рдРрд╕рд╛ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВ:
int valType = 15; Object refType = valType;
рдФрд░ рдЗрд╕рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рд╣рдореЗрдВ рд╕рдВрджрд░реНрдн рдкреНрд░рдХрд╛рд░ (
RefType ) рдХрд╛ рдПрдХ рдЪрд░ рдорд┐рд▓рддрд╛ рд╣реИред рдпрд╣рд╛рдБ рдирд┐рдореНрди рд╣реЛрдЧрд╛: рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╡реИрд░рд┐рдПрдмрд▓
рд╡реИрд▓реНрдпреВ рдЯрд╛рдЗрдк (рдорд╣рддреНрд╡рдкреВрд░реНрдг рдкреНрд░рдХрд╛рд░) рдХрд╛ рдорд╛рди рд╕реНрдЯреИрдХ рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛, рдлрд┐рд░ рдЗрд╕ рд╡реИрд░рд┐рдПрдмрд▓ рдХреЗ рдорд╛рди рдХреЛ рд╕реНрдЯреЛрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрдВрдЯреЗрдирд░ рдмрдирд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ (рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЯрд╛рдЗрдк
рдЗрдВрдЯ рдХреЗ рдПрдХ рд╡реЗрд░рд┐рдПрдВрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрдВрдЯреЗрдирд░, рдЬреЛ рдХрд┐ рд╡реИрд▓реНрдпреВ + рд╕рд┐рдВрдХ рдмреНрд▓реЙрдХ рдЗрдВрдбреЗрдХреНрд╕ рдХреЗ рд▓рд┐рдП 4 рдмрд╛рдЗрдЯреНрд╕ рд╣реИ) (4 рдФрд░) рдмрд╛рдЗрдЯ)), рдФрд░ рдпрд╣рд╛рдБ рдЗрд╕ рдХрдВрдЯреЗрдирд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреЙрдЗрдВрдЯрд░ рд╣реИ рдФрд░ рдЗрд╕реЗ рд╣рдорд╛рд░реЗ рд░реЗрдлрд░реЗрдВрд╕ рдЯрд╛рдЗрдк (
рд░рд┐рдлреНрдпреВрдЯ ) рдХреЗ рд╡реЗрд░рд┐рдПрдмрд▓ рдореЗрдВ рд╕реНрдЯреЛрд░ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдмреЙрдХреНрд╕рд┐рдВрдЧ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред
рд╡рд┐рд╡рд░рдг
рдпрд╣рд╛рдБ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛
рд╣реИ , рд▓реЗрдХрд┐рди
рдЬреЗред рд░рд┐рдХреНрдЯрд░ рдХреА рдкреБрд╕реНрддрдХ
"CR рдереНрд░реВ рд╕реА #" (рдЕрдзреНрдпрд╛рдп 5) рдореЗрдВ рдмреЗрд╣рддрд░ рдкрдврд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдЗрди рдСрдкрд░реЗрд╢рдиреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рдмрд╕реЗ рдЕрдкреНрд░рд┐рдп рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рд╡реЗ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд░реВрдк рд╕реЗ рдШрдЯрд┐рдд рд╣реЛрддреЗ рд╣реИрдВред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдо рдПрдХ рдирдВрдмрд░ рдХреЛ рдХрдВрд╕реЛрд▓ рдкрд░ рдкреНрд░рд┐рдВрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП:
Console.WriteLine(20);
рдпрд╛ рдЗрд╕ рддрд░рд╣:
Console.WriteLine("{0}", 20);
рдЕрдВрддрд░ рдХреНрдпрд╛ рд╣реИ? рдЖрдЗрдП MSIL рдореЗрдВ рд╕рдВрдХрд▓рди рдкрд░рд┐рдгрд╛рдо рджреЗрдЦреЗрдВ (рдпрд╣
ILdasm.exe рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ):
рджреВрд╕рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдо
рдмреЙрдХреНрд╕ рдХрдорд╛рдВрдб рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ, рдЬреЛ рдкреИрдХреЗрдЬрд┐рдВрдЧ рдХрд░рддрд╛ рд╣реИред
рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдпрд╣ рдХрд╣рд╛рдБ рд╕реЗ рдЖрдпрд╛ рд╣реИ,
Console.WriteLine рд╡рд┐рдзрд┐ рдХреЗ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВ рдФрд░ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЙрдирдореЗрдВ рд╕реЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА 18 рд╣реИрдВред
рдкрд╣рд▓рд╛ рдХреЙрд▓ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ:
void WriteLine(int value);
рдпрд╣рд╛рдВ рд╕рдм рдХреБрдЫ рд╕рд░рд▓ рд╣реИ - рдпрд╣ рд╡рд┐рдзрд┐ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг
рдЗрдВрдЯ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддреА рд╣реИ, рд╣рдо рдПрдХ
рдЗрдВрдЯ рд╡реИрд▓реНрдпреВ рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ, рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░ рд╡реИрд▓реНрдпреВ рджреНрд╡рд╛рд░рд╛ рдкрд╛рд╕ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣рд╛рдВ рдкреИрдХреЗрдЬрд┐рдВрдЧ рдХреА рдЬрд░реВрд░рдд рдирд╣реАрдВ рд╣реИред
рджреВрд╕рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдПрдХ рдЕрд▓рдЧ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
void WriteLine(string format, object arg0);
рдкреНрд░рд╛рд░реВрдк рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рдкреНрд░рд╕рд╛рд░рдг рдХреЗ рд╕рд╛рде, рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ: рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ - рд╣рдо рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВред рдФрд░ рддрд░реНрдХ
arg0 рдХреЗ рд╕рд╛рде, рдпрд╣ рдереЛрдбрд╝рд╛ рдФрд░ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╣реИ: рд╡рд┐рдзрд┐ рд╕рдВрджрд░реНрдн рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рдХреА
рд╡рд╕реНрддреБ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд╕реНрддреБ рдорд╛рдВрдЧрддреА рд╣реИ, рдФрд░ рд╣рдо рд╡рд┐рдзрд┐ рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЗ рдорд╛рди рдХреЛ рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВред рдпрд╣реАрдВ рдкрд░ рдкреИрдХреЗрдЬрд┐рдВрдЧ рдХреА рдЬрд░реВрд░рдд рд╣реЛрддреА рд╣реИред рдирддреАрдЬрддрди, рдкреНрд░рдХрд╛рд░
рдЗрдВрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрдВрдЯреЗрдирд░ рдореЗрдореЛрд░реА рдореЗрдВ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдорд╛рди 20 рдХреЛ рдЗрд╕рдореЗрдВ рдХреЙрдкреА рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕ рдХрдВрдЯреЗрдирд░ рдХреЛ рд╕реВрдЪрдХ рддрд░реНрдХ
arg0 рдореЗрдВ рдЧрд┐рд░ рдЬрд╛рддрд╛ рд╣реИред
рдЖрдЗрдП рдЕрдм рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ рдХрд┐ рдХреНрдпрд╛ рд╣рдорд╛рд░реЗ рд╕рдВрдЪрд╛рд▓рди рдЗрди рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдмрд╣реБрдд рдзреАрдорд╛ рдХрд░ рджреЗрддреЗ рд╣реИрдВред
рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рдХреЛрдб рдХреЛрдб рд▓рд┐рдЦрд╛:
рдореБрдЭреЗ рдирд┐рдореНрди рдкрд░рд┐рдгрд╛рдо рдорд┐рд▓рд╛ (рдЗрдВрдЯреЗрд▓ рдХреЛрд░ i5 750 2.67GHz рдкреНрд░реЛрд╕реЗрд╕рд░, 4 рдХреЛрд░, рдПрдХ рдкрд░ рдкреНрд░рджрд░реНрд╢рди):
00:00:00.0600060 00:00:00.0770077 00:00:00.0570057 00:00:00.0710071 00:00:00.0680068 00:00:00.0650065 00:00:00.0530053 00:00:00.0740074 00:00:00.0570057 00:00:00.0580058 00:00:00.0590059 00:00:00.0500050 00:00:00.0550055 00:00:00.0720072 00:00:00.0800080 00:00:00.0640064 00:00:00.0640064 00:00:00.0670067 00:00:00.0660066 00:00:00.0590059 Milliseconds need for 10KK boxing operations: 63,80638
рд▓рдЧрднрдЧ
рдФрд╕рддрди 64 рдорд┐рд▓рд┐рдпрди рдкреНрд░рддрд┐
10 рдорд┐рд▓рд┐рдпрдиред рдкреИрдХрд┐рдВрдЧ рд╕рдВрдЪрд╛рд▓рдиред
рдирд┐рд╖реНрдХрд░реНрд╖
рдПрдХ рдирд┐рд╖реНрдХрд░реНрд╖ рдХреЗ рд░реВрдк рдореЗрдВ, рдореИрдВ рдпрд╣ рдХрд╣рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдЙрдкрд░реЛрдХреНрдд рд╕рднреА рдЖрдкрдХреЗ рдХреЛрдб рдореЗрдВ рдбрд┐рд╕рдПрдореНрдмреЗрдВрдмрд▓рд░ рдХреЗ рд╕рд╛рде рдореБрдХреНрдХреЗрдмрд╛рдЬреА рдХреЗ рд▓рд┐рдП рдЦреЛрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрд╛рд░рдг рдирд╣реАрдВ рд╣реИ рдФрд░ рдПрдХ рд╕реМ рдорд┐рд▓реА рдкреНрд░рддрд┐ рдШрдВрдЯреЗ рдХреА рдЧрддрд┐ рд╕реЗ рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдорд┐рд▓реАрдореАрдЯрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВред рдирд╣реАрдВ, рдмрд┐рд▓реНрдХреБрд▓, рдпрд╣ рдкреВрд░реА рдмрдХрд╡рд╛рд╕ рд╣реИред рд▓реЗрдХрд┐рди рдЖрдкрдХреЗ рдХреЛрдб рдореЗрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреНрдпрд╛ рдЪрд▓ рд░рд╣рд╛ рд╣реИ рдпрд╣ рд╕рдордЭрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред рдФрд░ рдХрд┐рд╕реА рд╕рдордп, рдЕрд░рдмреЛрдВ рдмрд╛рд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдЪрдХреНрд░ рдореЗрдВ рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдСрдкрд░реЗрд╢рди рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрди рд╕рдХрддрд╛ рд╣реИред
рдпреБрдкреАрдбреА! рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ,
exmachine рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдореБрдЭреЗ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдореИрдВрдиреЗ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдорд╛рдк рдирд╣реАрдВ рд▓рд┐рдпрд╛ рд╣реИред рдпрд╣рд╛рдБ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдкрд░рд┐рдгрд╛рдо рд╣реИрдВ:
рдкрд░рд┐рдгрд╛рдо Cache warming results: 00:00:00.0505219 00:00:00.0491484 00:00:00.0527804 00:00:00.0586028 00:00:00.0595744 00:00:00.0573599 00:00:00.0678498 00:00:00.0560197 00:00:00.0591139 00:00:00.0382205 00:00:00.0602378 00:00:00.0862110 00:00:00.0632895 00:00:00.0584091 00:00:00.0556713 00:00:00.0572194 00:00:00.0544349 00:00:00.0750407 00:00:00.0579586 00:00:00.0561487 Test results: 00:00:00.0640218 00:00:00.0558972 00:00:00.0612732 00:00:00.0560300 00:00:00.0547193 00:00:00.0556158 00:00:00.0558210 00:00:00.0554421 00:00:00.0632168 00:00:00.0611355 00:00:00.0539173 00:00:00.0594863 00:00:00.0549896 00:00:00.0585462 00:00:00.0598485 00:00:00.0586522 00:00:00.0560457 00:00:00.0568806 00:00:00.0784523 00:00:00.0521756 Milliseconds need for 10KK boxing operations: 58,60835
UPD2! рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛
mstyura рдиреЗ рдпрд╛рдж рдХрд┐рдпрд╛ рдХрд┐ рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ Habr├й рдкрд░ рдПрдХ рд╕рдорд╛рди рдкреНрд░рд╢реНрди рдкрд╣рд▓реЗ рд╕реЗ рд╣реА
рдХрд╡рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдореИрдВ рдЖрдкрдХреЛ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП рд╡рд╣рд╛рдБ рджреЗрдЦрдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдБред