
рдЖрдкрдХреЛ Go-рдЖрд▓реЛрдЪрдХ рдХреЗ рд░реВрдк рдореЗрдВ Go рдХреЗ рд▓рд┐рдП рдПрдХ рдирдП рд╕реНрдерд┐рд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреА рд╣рд╛рд▓рд┐рдпрд╛ рдШреЛрд╖рдгрд╛ рдпрд╛рдж рд╣реЛ рд╕рдХрддреА рд╣реИред
рдореИрдВрдиреЗ рдЗрд╕рдХреЗ рд╕рд╛рде рдЧреЛрд▓рдВрдЧ / рдЧреЛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рдЬрд╛рдБрдЪ рдХреА рдФрд░ рдХреБрдЫ рдкреИрдЪ рднреЗрдЬреЗ рдЬреЛ рд╡рд╣рд╛рдВ рдкрд╛рдИ рдЧрдИ рдХреБрдЫ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рдареАрдХ рдХрд░рддреЗ рд╣реИрдВред
рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рд╣рдо рд╕рд╣реА рдХреЛрдб рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░реЗрдВрдЧреЗ, рдФрд░ рд╣рдореЗрдВ рдЧреЛ рдореЗрдВ рдФрд░ рднреА рдРрд╕реЗ рдмрджрд▓рд╛рд╡ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЗрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рд╕рдмрд╕реЗ рдЕрдзреАрд░ рдХреЗ рд▓рд┐рдП: рдЯреНрд░рд╛рдлрд┐рдпрд╛рдВ рдХреА рдПрдХ рдЕрджреНрдпрддрди рд╕реВрдЪреА ред
рдкрд░рд╕рд┐рдВрдЧ рд▓рд┐рд╕реНрдЯ рдкрд░ рдЬрд╛рдПрдВ dupSubExpr
рд╣рдо рд╕рднреА рдЧрд▓рддреА рдХрд░рддреЗ рд╣реИрдВ, рдФрд░, рдЕрдХреНрд╕рд░, рдЕрд╕рд╛рд╡рдзрд╛рдиреА рд╕реЗред рдЧреЛ, рдПрдХ рдРрд╕реА рднрд╛рд╖рд╛ рд╣реЛрдиреЗ рдХреЗ рдирд╛рддреЗ рдЬрд┐рд╕рдореЗрдВ рдЖрдкрдХреЛ рдХрднреА-рдХрднреА рдЙрдмрд╛рдК рдФрд░ рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ рдХреЛрдб рд▓рд┐рдЦрдирд╛ рдкрдбрд╝рддрд╛ рд╣реИ, рдХрднреА-рдХрднреА рдЯрд╛рдЗрдкреЛрд╕ рдФрд░ / рдпрд╛ рдХреЙрдкреА / рдкреЗрд╕реНрдЯ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдореЗрдВ рдпреЛрдЧрджрд╛рди рджреЗрддрд╛ рд╣реИред
CL122776 рдореЗрдВ рдбрдВрдкрд╕рдмрдкреНрд░рдЯ рджреНрд╡рд╛рд░рд╛ рдкрд╛рдП рдЧрдП рдмрдЧ рдХреЗ рд▓рд┐рдП рдПрдХ рдлрд┐рдХреНрд╕ рд╢рд╛рдорд┐рд▓ рд╣реИ:
func (a partsByVarOffset) Less(i, j int) bool { - return varOffset(a.slots[a.slotIDs[i]]) < varOffset(a.slots[a.slotIDs[i]]) + return varOffset(a.slots[a.slotIDs[i]]) < varOffset(a.slots[a.slotIDs[j]]) // ^__________________________________^ }
рдмрд╛рдИрдВ рдФрд░ рджрд╛рдИрдВ рдУрд░ рд╕реВрдЪрдХрд╛рдВрдХ рдкрд░ рдзреНрдпрд╛рди рджреЗрдВред рд╕реБрдзрд╛рд░ рд╕реЗ рдкрд╣рд▓реЗ, рдСрдкрд░реЗрдЯрд░ рдХреЗ LHS рдФрд░ RHS <
рд╕рдорд╛рди рдереЗ, рдФрд░ dupSubExpr
рд▓рд┐рдП dupSubExpr
рдиреЗ рдХрд╛рдо рдХрд┐рдпрд╛ред
рдпрджрд┐ рдЖрдкрдХреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдПрдХ рд╕рдВрд╕реНрдХрд░рдг рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рдгрд╛рд▓реА рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╛рдпреЛрдЬрд┐рдд рд╣реИ , рддреЛ рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдореЗрдВ рдЗрд╕реЗ рд▓рдкреЗрдЯрдХрд░ рдХреЛрдб рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдЗрд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд╛рдпрдХ рд╣реИред рдЕрдкрд╡рд╛рдж рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЕрдзрд┐рдХ рдмрд╛рд░ рдРрд╕реЗ "рдореГрдд" рдХреЛрдб рд╣рд╕реНрддрдХреНрд╖реЗрдк рдХрд░рддреЗ рд╣реИрдВ, рднреНрд░рдорд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдЫрд┐рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред
рдХрдореЗрдВрдЯрдСрдЙрдЯрдХреЛрдб рдХреЛ рдПрдХ рдРрд╕рд╛ рджрд┐рд▓рдЪрд╕реНрдк рдЕрдВрд╢ рдорд┐рд▓ рд╕рдХрддрд╛ рд╣реИ ( CL122896 ):
switch arch.Family {
рдереЛрдбрд╝реА рдЕрдзрд┐рдХ рдЯрд┐рдкреНрдкрдгреА рд╣реИ:
рдпрджрд┐ рдЖрдк go1.4
рд╢рд╛рдЦрд╛ рдореЗрдВ рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рдЗрди 3 рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рдЯрд┐рдкреНрдкрдгреА рд╕реЗ рд╣рдЯрд╛ рджреЗрддреЗ рд╣реИрдВ, рддреЛ рдХреЛрдб рд╕рдВрдХрд▓рд┐рдд рдирд╣реАрдВ рд╣реЛрдЧрд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрджрд┐ рдЖрдк рдЙрдиреНрд╣реЗрдВ рд╡рд┐рдЬрд╝рд╛рд░реНрдб рдореЗрдВ рдЕрдирд▓реЙрдХрд░ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╕рдм рдХреБрдЫ рдХрд╛рдо рдХрд░реЗрдЧрд╛ред
рдЖрдорддреМрд░ рдкрд░, рдХрд┐рд╕реА рдЯрд┐рдкреНрдкрдгреА рдореЗрдВ рдЫрд┐рдкреЗ рдХреЛрдб рдХреЛ рд╡рд┐рд▓реЛрдкрди рдпрд╛ рд░рд┐рд╡рд░реНрд╕ рд╕рдХреНрд░рд┐рдпрдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред
рдпрд╣ рдЙрдкрдпреЛрдЧреА рд╣реИ, рд╕рдордп-рд╕рдордп рдкрд░, рдЕрдкрдиреЗ рдХреЛрдб рдореЗрдВ рдЕрддреАрдд рдХреА рдРрд╕реА рдЧреВрдБрдЬ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдПред
рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рдХрдард┐рдирд╛рдЗрдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВрдпрд╣ рдореЗрд░реА рдкрд╕рдВрджреАрджрд╛ рдЬрд╛рдБрдЪреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд╕рдмрд╕реЗ "рд╢реЛрд░" рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИред
рд╕рдВрдХреБрд▓ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╕рд╛рд░реЗ рдЧрд▓рдд рд╕рдХрд╛рд░рд╛рддреНрдордХ рдЬреЛ math/big
рдФрд░ рд╕рдВрдХрд▓рдХ рдХреЗ рдЕрдВрджрд░ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдкрд╣рд▓реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпреЗ рдЖрдорддреМрд░ рдкрд░ рдХрд┐рдП рдЧрдП рд╕рдВрдЪрд╛рд▓рди рдкрд░ рд╡реНрдпрд╛рдЦреНрдпрд╛рддреНрдордХ рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдВ рд╣реИрдВ, рдФрд░ рджреВрд╕рд░реЗ рдореЗрдВ, рдХреЛрдб рдХрд╛ рдПрдХ рд╡рд┐рд╡рд░рдг рдЬреЛ рдПрдПрд╕рдЯреА рдЯреБрдХрдбрд╝рд╛ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИред рдЭреВрдареА рдирдХрд╛рд░рд╛рддреНрдордХ рд╢реБрд░реБрдЖрдд рдХрд┐рдП рдмрд┐рдирд╛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ "рдореГрдд" рдХреЛрдб рд╕реЗ рдЗрд╕ рддрд░рд╣ рдХреА рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЛ рднреЗрдж рдХрд░рдирд╛ рдирд┐рдВрджрдиреАрдп рд╣реИред
рдпрд╣ рдЗрд╕ рд╡рд┐рдЪрд╛рд░ рдХреЛ рдЬрдиреНрдо рджреЗрддрд╛ рд╣реИ: рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рд╣рдо рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рдЕрдВрджрд░ рдХреЛрдб рдХреЗ рд╡рд┐рд╢реЗрд╖рдЬреНрдЮ рдХреЗ рд▓рд┐рдП рд╕рд╣рдордд рд╣реЛрддреЗ рд╣реИрдВ, рдЬреЛ рд╡реНрдпрд╛рдЦреНрдпрд╛рддреНрдордХ рд╣реИ? рдлрд┐рд░ рд╕реНрдереИрддрд┐рдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдпрд╣ рдХреЛрдИ рднреА рдЯреНрд░рд┐рдлрд╝рд▓ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдпрд╛ рддреЛ рдЗрд╕ рддрд░рд╣ рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛рддреНрдордХ рдЯрд┐рдкреНрдкрдгреА рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдирд╛ рдЖрд╕рд╛рди рдмрдирд╛ рджреЗрдЧрд╛, рдпрд╛ рдЗрд╕реЗ рдЕрдорд╛рдиреНрдп рдЧреЛ рдХреЛрдб рдмрдирд╛ рджреЗрдЧрд╛ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдЖрдк рдкрд╛рдЙрдВрдб рд╕рд╛рдЗрди, рд▓рд╛рдЗрди рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ #
рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ)ред
рдПрдХ рдЕрдиреНрдп рд╢реНрд░реЗрдгреА рд╕реНрдкрд╖реНрдЯ TODO
рд╕рд╛рде рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдВ рд╣реИрдВред рдпрджрд┐ рдХреЛрдб рдЯрд┐рдкреНрдкрдгреА рдХреЗ рд▓рд┐рдП рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕ рдмрд╛рдд рдХрд╛ рд╕реНрдкрд╖реНрдЯ рд╡рд┐рд╡рд░рдг рд╣реИ рдХрд┐ рдРрд╕рд╛ рдХреНрдпреЛрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдЬрдм рдЗрд╕ рдХреЛрдб рдХреЗ рдЯреБрдХрдбрд╝реЗ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛рдИ рдЧрдИ рд╣реИ, рддреЛ рдЪреЗрддрд╛рд╡рдиреА рдирд╣реАрдВ рджреЗрдирд╛ рдмреЗрд╣рддрд░ рд╣реИред рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдзрд┐рдХ рдордЬрд╝рдмреВрддреА рд╕реЗ рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИред
boolExprSimplify
рдХрднреА-рдХрднреА рд▓реЛрдЧ рдЕрдЬреАрдм рдХреЛрдб рд▓рд┐рдЦрддреЗ рд╣реИрдВред рд╢рд╛рдпрдж рдпрд╣ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рддрд╛рд░реНрдХрд┐рдХ ( рдмреБрд▓рд┐рдпрди ) рднрд╛рд╡ рдХрднреА-рдХрднреА рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЕрдЬреАрдм рд▓рдЧрддреЗ рд╣реИрдВред
рдЧреЛ рдореЗрдВ рдПрдХ рдЙрддреНрдХреГрд╖реНрдЯ x86 рдЕрд╕реЗрдореНрдмрд▓рд░ рдмреИрдХрдПрдВрдб рд╣реИ (рдпрд╣рд╛рдБ рдЖрдВрд╕реВ рдЧрд┐рд░ рдЧрдП), рд▓реЗрдХрд┐рди ARM рдиреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЧрд▓рдд рдХрд┐рдпрд╛:
if !(o1 != 0) { break }
"рдпрджрд┐ o1 0 рдХреЗ рдмрд░рд╛рдмрд░ рдирд╣реАрдВ рд╣реИ" ... рджреЛрд╣рд░рд╛ рдирдХрд╛рд░ рдПрдХ рдХреНрд▓рд╛рд╕рд┐рдХ рд╣реИред рдпрджрд┐ рдЖрдк рдЗрд╕реЗ рдкрд╕рдВрдж рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдореИрдВ рдЖрдкрдХреЛ CL123377 рдХреЗ рд╕рд╛рде рдЦреБрдж рдХреЛ рдкрд░рд┐рдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдордВрддреНрд░рд┐рдд рдХрд░рддрд╛ рд╣реВрдВ ред рд╡рд╣рд╛рдБ рдЖрдк рд╕рд╣реА рд╕рдВрд╕реНрдХрд░рдг рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред
рд╕рд╣реА рд╡рд┐рдХрд▓реНрдк (рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рд╛рд▓рдЪ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ) - if !(o1 != 0) { + if o1 == 0 {
boolExprSimplify рд╕рд░рд▓реАрдХрд░рдг рдХреЗ рдЙрджреНрджреЗрд╢реНрдп рд╕реЗ рд╣реИ рдЬреЛ рдкрдардиреАрдпрддрд╛ рдХреЛ рдмрдврд╝рд╛рддрд╛ рд╣реИ (рдФрд░ рдЧреЛ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝рд░ рдЗрд╕рдХреЗ рдмрд┐рдирд╛ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рдореБрджреНрджреЗ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░реЗрдЧрд╛)ред
underef
рдпрджрд┐ рдЖрдк рдЗрд╕рдХреЗ рдкреВрд░реНрд╡ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рд╕реЗ рдЧреЛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдЕрдирд┐рд╡рд╛рд░реНрдп рдЕрд░реНрдзрд╡рд┐рд░рд╛рдореЛрдВ, рдмрд┐рдВрджреБрдУрдВ рдХреА рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдбреЗрд░реЗрдлреЗрд░рд┐рдВрдЧ рдХреА рдХрдореА рдФрд░ рдЕрдиреНрдп рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рдпрд╛рдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдЖрдЬ рдирдП рдХреЛрдб рдореЗрдВ рджреЗрдЦрдирд╛ рд▓рдЧрднрдЧ рдЕрд╕рдВрднрд╡ рд╣реИред
рдкреБрд░рд╛рдиреЗ рдХреЛрдб рдореЗрдВ, рдЖрдк рдЕрднреА рднреА рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ:
CL122895 рдореЗрдВ рдирд┐рд╢реНрдЪрд┐рдд рдХрдИ рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдЯреНрд░рд┐рдЧрд░ рд╣реЛрддреЗ рд╣реИрдВ ред
appendCombine
рдЖрдк рдЬрд╛рди рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ append
рдХреЛ рд▓рдХреНрд╖реНрдп рд╕реНрд▓рд╛рдЗрд╕ рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рддрд░реНрдХ рджрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдХреБрдЫ рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ, рдпрд╣ рдЖрдкрдХреЛ рдХреЛрдб рдХреА рдкрдардиреАрдпрддрд╛ рдХреЛ рдереЛрдбрд╝рд╛ рд╕реБрдзрд╛рд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди, рдЬреЛ рдЕрдзрд┐рдХ рджрд┐рд▓рдЪрд╕реНрдк рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдпрд╣ рдЖрдкрдХреЗ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рдЧрддрд┐ рднреА рджреЗ рд╕рдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдХрдВрдкрд╛рдЗрд▓рд░ рд╕рдВрдЧрдд append
рдХреЙрд▓ рдХреЛ рдирд╣реАрдВ рджрдмрд╛рддрд╛ рд╣реИ ( cmd / рд╕рдВрдХрд▓рди: рдПрдкреЗрдВрдб рдХреЙрд▓ рдХреЛ рдорд┐рд▓рд╛рдПрдВ )ред
рдЧреЛ рдореЗрдВ, рдПрдкреЗрдВрдбрдХреЙрдореНрдмрд┐рди рдЬрд╛рдБрдЪ рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рднрд╛рдЧ рдкрд╛рдпрд╛ рдЧрдпрд╛:
- for i := len(ip) - 1; i >= 0; i-- { - v := ip[i] - buf = append(buf, hexDigit[v&0xF]) - buf = append(buf, '.') - buf = append(buf, hexDigit[v>>4]) - buf = append(buf, '.') - } + for i := len(ip) - 1; i >= 0; i-- { + v := ip[i] + buf = append(buf, hexDigit[v&0xF], + '.', + hexDigit[v>>4], + '.') + }
name old time/op new time/op delta ReverseAddress-8 4.10┬╡s ┬▒ 3% 3.94┬╡s ┬▒ 1% -3.81% (p=0.000 n=10+9)
CL117615 рдореЗрдВ рд╡рд┐рд╡рд░рдгред
rangeValCopy
рдпрд╣ рдХреЛрдИ рд░рд╣рд╕реНрдп рдирд╣реАрдВ рд╣реИ рдХрд┐ рдПрдХ range
рд▓реВрдк рдореЗрдВ рдЪрд▓рдиреЗ рд╡рд╛рд▓реЗ рдорд╛рди рдХреЙрдкреА рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдЫреЛрдЯреА рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд▓рд┐рдП, рдХрд╣рддреЗ рд╣реИрдВ, 64 рдмрд╛рдЗрдЯреНрд╕ рд╕реЗ рдХрдо, рдЖрдк рдЗрд╕реЗ рдиреЛрдЯрд┐рд╕ рднреА рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрджрд┐ рдРрд╕рд╛ рдЪрдХреНрд░ "рдЧрд░реНрдо" рдкрде рдкрд░ рд╕реНрдерд┐рдд рд╣реИ, рдпрд╛, рдЬрд┐рд╕ рдкрд░ рдЖрдк рдкреБрдирд░рд╛рд╡реГрддрд┐ рдХрд░рддреЗ рд╣реИрдВ, рдЙрд╕рдореЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рддрддреНрд╡ рд╣реЛрддреЗ рд╣реИрдВ, рдУрд╡рд░рд╣реЗрдб рдореВрд░реНрдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
рдЧреЛ рдореЗрдВ рдПрдХ рдзреАрдореА рдЧрддрд┐ рд╕реЗ рд▓рд┐рдВрдХрд░ (cmd / рд▓рд┐рдВрдХ) рд╣реИ, рдФрд░ рдЗрд╕рдХреА рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдореЗрдВ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрджрд▓рд╛рд╡ рдХреЗ рдмрд┐рдирд╛, рдПрдХ рдордЬрдмреВрдд рдкреНрд░рджрд░реНрд╢рди рд▓рд╛рдн рдкреНрд░рд╛рдкреНрдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рддрдм рдЖрдк рдорд╛рдЗрдХреНрд░реЛрдПрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝реЗрд╢рди рдХреА рдорджрдж рд╕реЗ рдЗрд╕рдХреА рдЕрдХреНрд╖рдорддрд╛ рдХреЛ рдереЛрдбрд╝рд╛ рдХрдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╣рд░ рдкреНрд░рддрд┐рд╢рдд рдпрд╛ рджреЛ рдорд╛рдпрдиреЗ рд░рдЦрддрд╛ рд╣реИред
рд░реЗрдВрдЬрд╡реИрд▓рдХреЙрдкреА рдЬрд╛рдБрдЪ рдореЗрдВ рдПрдХ рд╣реА рдмрд╛рд░ рдореЗрдВ рдЕрд╡рд╛рдВрдЫрд┐рдд рдбреЗрдЯрд╛ рдХреЙрдкреА рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде рдХрдИ рдЪрдХреНрд░ рдкрд╛рдП рдЧрдПред рдпрд╣рд╛рдБ рдЙрдирдореЗрдВ рд╕реЗ рд╕рдмрд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИрдВ:
- for _, r := range exports.R { - d.mark(r.Sym, nil) - } + for i := range exports.R { + d.mark(exports.R[i].Sym, nil) + }
рдкреНрд░рддреНрдпреЗрдХ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдкрд░ R[i]
рдХреЛ рдХреЙрдкреА рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рд╣рдо рдХреЗрд╡рд▓ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдмреНрдпрд╛рдЬ рдХреЗ рдПрдХрдорд╛рддреНрд░ рд╕рджрд╕реНрдп рдХреА рдУрд░ рдореБрдбрд╝рддреЗ рд╣реИрдВ, Sym
ред
name old time/op new time/op delta Linker-4 530ms ┬▒ 2% 521ms ┬▒ 3% -1.80% (p=0.000 n=17+20)
рдкреИрдЪ рдХрд╛ рдкреВрд░реНрдг рд╕рдВрд╕реНрдХрд░рдг рдпрд╣рд╛рдВ рдЙрдкрд▓рдмреНрдз рд╣реИ: CL113636 ред
namedConst
рдЧреЛ рдореЗрдВ, рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдирд╛рдорд╛рдВрдХрд┐рдд рд╕реНрдерд┐рд░рд╛рдВрдХ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рд╕рдореВрд╣реЛрдВ рдореЗрдВ рдЗрдХрдЯреНрдареЗ рд╣реБрдП, рдкрд░рд╕реНрдкрд░ рдЬреБрдбрд╝реЗ рдирд╣реАрдВ рд╣реИрдВ рдФрд░ рдПрдХ рд╕рдВрд▓рдпрди рдирд╣реАрдВ рдмрдирд╛рддреЗ рд╣реИрдВ ( рдкреНрд░рд╕реНрддрд╛рд╡: рдХрд▓реНрдкрдирд╛: рдЯрд╛рдЗрдк рдХрд┐рдпрд╛ рдЧрдпрд╛ рдПрдирдо рд╕рдорд░реНрдерди рдЬреЛрдбрд╝реЗрдВ )ред
рдПрдХ рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЖрдк рдПрдирдо рдХреЗ рд░реВрдк рдореЗрдВ рдЬрд┐рд╕ рддрд░рд╣ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЙрд╕ рддрд░рд╣ рдХреЗ рдЕрдирдЪрд╛рд╣реЗ рд╕реНрдерд┐рд░рд╛рдВрдХ рдХреЛ рдбрд╛рд▓рдирд╛ рд╣реИ ред
рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдЖрдк рдПрдХ Color
рдкреНрд░рдХрд╛рд░ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЗрд╕рдХрд╛ рдорд╛рди const ColDefault Color = 0
ред
рдЗрди рджреЛрдиреЛрдВ рдореЗрдВ рд╕реЗ рдХреМрди рд╕рд╛ рдХреЛрдб рд╕реНрдирд┐рдкреЗрдЯ рдЖрдкрдХреЛ рдЕрдзрд┐рдХ рдкрд╕рдВрдж рд╣реИ?
рдпрджрд┐ (B)
рдЖрдкрдХреЛ рдЕрдзрд┐рдХ рдЙрдЪрд┐рдд рд▓рдЧрддрд╛ рд╣реИ, рддреЛ рдирд╛рдорд┐рдд рдирд╛рдо рдХреА рдЬрд╛рдБрдЪ рдХрд░рдиреЗ рд╕реЗ рдЖрдкрдХреЛ рдирд╛рдорд╛рдВрдХрд┐рдд рд╕реНрдерд┐рд░рд╛рдВрдХ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рдЯреНрд░реИрдХ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдорд┐рд▓реЗрдЧреА, рдЬрд┐рд╕рдХрд╛ рдирд╛рдо рд░рдЦрд╛ рдЧрдпрд╛ рд╣реИред
рдЗрд╕ рддрд░рд╣ html/template
рдкреИрдХреЗрдЬ рд╕реЗ context.mangle
рд╡рд┐рдзрд┐ рдмрджрд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛:
s := templateName + "$htmltemplate_" + c.state.String() - if c.delim != 0 { + if c.delim != delimNone { s += "_" + c.delim.String() } - if c.urlPart != 0 { + if c.urlPart != urlPartNone { s += "_" + c.urlPart.String() } - if c.jsCtx != 0 { + if c.jsCtx != jsCtxRegexp { s += "_" + c.jsCtx.String() } - if c.attr != 0 { + if c.attr != attrNone { s += "_" + c.attr.String() } - if c.element != 0 { + if c.element != elementNone { s += "_" + c.element.String() } return s
рд╡реИрд╕реЗ, рдХрднреА-рдХрднреА рдкреИрдЪ рдХреЗ рд▓рд┐рдВрдХ рдкрд░ рдЖрдк рджрд┐рд▓рдЪрд╕реНрдк рдЪрд░реНрдЪрд╛ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ ...
CL123376 рдРрд╕рд╛ рд╣реА рдПрдХ рдорд╛рдорд▓рд╛ рд╣реИред
unslice
рд╕реНрд▓рд╛рдЗрд╕ рдПрдХреНрд╕рдкреНрд░реЗрд╢рди рдХреА рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рдпрд╣ рд╣реИ рдХрд┐ x[:]
рд╣рдореЗрд╢рд╛ x
рд╕рдорд╛рди рд╣реЛрддрд╛ рд╣реИ рдпрджрд┐ рдЯрд╛рдЗрдк x
рдПрдХ рд╕реНрд▓рд╛рдЗрд╕ рдпрд╛ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╣реИред рд╕реНрд▓рд╛рдЗрд╕ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рдХрд┐рд╕реА рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ []T
рддрддреНрд╡ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рдиреАрдЪреЗ рджреА рдЧрдИ рд╕реВрдЪреА рдореЗрдВ рд╕рдм рдХреБрдЫ рд╕рдорд╛рди рд╣реИ ( x
- slice):
unslice рд╕рдорд╛рди рдмреЗрдорд╛рдиреА рд╕реНрд▓рд╛рдЗрд╕ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдкрд╛рддрд╛ рд╣реИред рдпреЗ рднрд╛рд╡ рд╣рд╛рдирд┐рдХрд╛рд░рдХ рд╣реИрдВ, рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕рдВрдЬреНрдЮрд╛рдирд╛рддреНрдордХ рднрд╛рд░ рдХреЗ рд╕рд╛рдеред x[:]
рдореЗрдВ рд╕рд░рдгреА рд╕реЗ рдПрдХ рдЯреБрдХрдбрд╝рд╛ рд▓реЗрдиреЗ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдХрд╛рдлреА рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╢рдмреНрджрд╛рд░реНрде рд╣реИред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╢реНрд░реЗрдгрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдЯреБрдХрдбрд╝рд╛ рдЯреБрдХрдбрд╝рд╛ рд╢реЛрд░ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХреБрдЫ рднреА рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред
рдореИрдВ CL123375 рдореЗрдВ рдПрдХ рдкреИрдЪ рдХреЗ рд▓рд┐рдП рдкреВрдЫрддрд╛ рд╣реВрдВ ред
switchTrue
CL123378 рдореЗрдВ , " switch true {...}
" рдХреЛ " switch {...}
" рджреНрд╡рд╛рд░рд╛ рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рджреЛрдиреЛрдВ рд░реВрдк рдмрд░рд╛рдмрд░ рд╣реИрдВ, рд▓реЗрдХрд┐рди рджреВрд╕рд░рд╛ рдЕрдзрд┐рдХ рдореБрд╣рд╛рд╡рд░реЗрджрд╛рд░ рд╣реИред
SwitchTrue рдХреА рдЬрд╛рдБрдЪ рдХрд░рдХреЗ рдкрд╛рдпрд╛ рдЧрдпрд╛ред
рдЕрдзрд┐рдХрд╛рдВрд╢ рд╢реИрд▓реАрдЧрдд рдЬрд╛рдБрдЪ рдареАрдХ рдРрд╕реЗ рдорд╛рдорд▓реЛрдВ рдХреЛ рдкреНрд░рдХрдЯ рдХрд░рддреА рд╣реИрдВ рдЬрд╣рд╛рдБ рджреЛрдиреЛрдВ рд╡рд┐рдХрд▓реНрдк рд╕реНрд╡реАрдХрд╛рд░реНрдп рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЙрдирдореЗрдВ рд╕реЗ рдПрдХ рдЕрдзрд┐рдХ рд╕рд╛рдорд╛рдиреНрдп рд╣реИ рдФрд░ рдЕрдзрд┐рдХ рдЧреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реИред рдЙрд╕реА рд╢реНрд░реГрдВрдЦрд▓рд╛ рд╕реЗ рдЕрдЧрд▓рд╛ рдЪреЗрдХред
typeUnparen
рдЬрд╛рдУ, рдХрдИ рдЕрдиреНрдп рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛рдУрдВ рдХреА рддрд░рд╣, рдХреЛрд╖реНрдардХреЛрдВ рд╕реЗ рдкреНрдпрд╛рд░ рд╣реИред рдЗрддрдирд╛ рдХрд┐ рдореИрдВ рдЙрдирдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рднреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реВрдВ:
type ( t0 int t1 (int) t2 ((int))
рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ рдЕрдЧрд░ рдЖрдк gofmt
рдЪрд▓рд╛рддреЗ рд╣реИрдВ?
type ( t0 int t1 (int)
рдЗрд╕рд▓рд┐рдП рдЯрд╛рдЗрдкрдЕрдкрдиреЗрдкрд░ рдореМрдЬреВрдж рд╣реИред рд╡рд╣ рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ рднрд╛рд╡реЛрдВ рдХреЛ рдкрд╛рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдЖрдк рдХреЛрд╖реНрдардХ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдХрдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдореИрдВрдиреЗ CL123379 рднреЗрдЬрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рд╕рдореБрджрд╛рдп рдЗрд╕реЗ рдХреИрд╕реЗ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░реЗрдЧрд╛ред
рд▓рд┐рд╕реНрдк рдХреЛ рдмреНрд░реЗрд╕рд┐рдЬрд╝ рдкрд╕рдВрдж рдирд╣реАрдВ рд╣реИрд╕реА рдЬреИрд╕реА рднрд╛рд╖рд╛рдУрдВ рдХреЗ рд╡рд┐рдкрд░реАрдд, рд▓рд┐рд╕реНрдк рдореЗрдВ рдХрд┐рд╕реА рднреА рд╕реНрдерд╛рди рдкрд░ рдмреЗрдХрд╛рд░ рдХреЛрд╖реНрдардХ рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░рдирд╛ рдЗрддрдирд╛ рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реИред рдЗрд╕рд▓рд┐рдП рдРрд╕реА рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рдЬрд┐рдирдХрд╛ рд╡рд╛рдХреНрдп - рд╡рд┐рдиреНрдпрд╛рд╕ S- рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ, рдПрдХ рдРрд╕рд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд▓рд┐рдЦрдирд╛ рдЬреЛ рдХреБрдЫ рднреА рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдмреНрд░реИрдХреЗрдЯреНрд╕ рд╣реЛрдирд╛ рдХреБрдЫ рдЕрдиреНрдп рднрд╛рд╖рд╛рдУрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рдХрдард┐рди рд╣реИред
рдЬрд╛рдиреЗ рдкрд░ рдЖрд▓реЛрдЪрдХ

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