рдЯрд┐рдк 23. рд╕реЙрд░реНрдЯ рдХрд┐рдП рдЧрдП рд╡реИрдХреНрдЯрд░ рдХреЗ рд╕рд╛рде рд╕рд╣рдпреЛрдЧреА рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЛ рдмрджрд▓рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред

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

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

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

рдЗрдВрд╕реНрдЯреНрд░реБрдореЗрдВрдЯреЗрд╢рди:
рд╣рд╛рд░реНрдбрд╡реЗрдпрд░: рд╕реНрд╡реИрдк рдкреНрд░реЛрд╕реЗрд╕рд░ (рдЗрдВрдЯреЗрд▓ Xeon E5420) рд╕рд░реНрд╡рд░ рд╕реНрд╡реИрдк рдлрд╛рдЗрд▓ рдХреЗ рдмрд┐рдирд╛ред
рд╕реЙрдлреНрдЯрд╡реЗрдпрд░: рдХрд░реНрдиреЗрд▓ рдХреЗ рд╕рд╛рде Ubuntu рд╕рд░реНрд╡рд░ 2.6.28, gcc 4.3.3ред
рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдирд╛: -O3 -рдлреЗрд▓рд┐рдб-рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░реНрд╕ -fno- рдЕрдкрд╡рд╛рдж -fno-rtti -funroll-loops -ffast-math -fomit-рдлрд╝реНрд░реЗрдо-рдкреЙрдЗрдВрдЯрд░-рдореЙрд░реНрдЪ = core2
рдкреНрд░рддреНрдпреЗрдХ рдкрд░реАрдХреНрд╖рдг рдХрдИ рдмрд╛рд░ (рдПрди = 10) рдЪрд▓рд╛рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЬрдмрдХрд┐ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рдиреНрдпреВрдирддрдо, рдЕрдзрд┐рдХрддрдо рдФрд░ рдФрд╕рдд рдореВрд▓реНрдп рджрд░реНрдЬ рдХрд┐рдП рдЧрдП рдереЗред рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рджреМрд░рд╛рди, рдкреНрд░рд╛рдкреНрдд рдореВрд▓реНрдпреЛрдВ рдореЗрдВ рдЕрдВрддрд░ рдХрдо рд╕реЗ рдХрдо рд╣реЛ рдЧрдпрд╛ рдерд╛ (рд╕рд░реНрд╡рд░ рдкрд░ рд▓реЛрдб рдХреЛ рдХрдо рдХрд░рдирд╛, рд╕реАрдкреАрдпреВ рдЖрддреНрдореАрдпрддрд╛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛)ред

рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдЖрдЗрдЯрдо рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░рддреЗ рд╕рдордп рдкреНрд░рд╛рдкреНрдд рдбреЗрдЯрд╛



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

рдХрдВрдЯреЗрдирд░реЛрдВ рдореЗрдВ рд╡рд╕реНрддреБрдУрдВ рдХреА рдЦреЛрдЬ рдХрд░рддреЗ рд╕рдордп рдкреНрд░рд╛рдкреНрдд рдбреЗрдЯрд╛



рджреВрд╕рд░рд╛ рдЧреНрд░рд╛рдл рдХрдВрдЯреЗрдирд░ рдореЗрдВ рддрддреНрд╡реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдкрд░ рдкреНрд░рддрд┐ рдпреВрдирд┐рдЯ рд╕рдордп (10 рд╕реЗрдХрдВрдб) рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреА рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИред рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╡реЗрдХреНрдЯрд░ рдореЗрдВ рдЦреЛрдЬ рдХреА рдЧрддрд┐ рдЕрдзрд┐рдХ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ рдХреА рдЙрдореНрдореАрдж рд╣реИ, рдФрд░ 1 рдорд┐рд▓рд┐рдпрди рд░рд┐рдХреЙрд░реНрдб рджреНрд╡рд╛рд░рд╛ рд╡реЗрдХреНрдЯрд░ рдореЗрдВ рдЦреЛрдЬреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдорд╛рдирдЪрд┐рддреНрд░ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рд▓рдЧрднрдЧ 3.9 рдЧреБрдирд╛ рдЕрдзрд┐рдХ рд╣реИред

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

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


All Articles