рдЕрдкрдиреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рддреЗрдЬрд╝реА рд╕реЗ рдХреИрд╕реЗ рдмрдирд╛рдПрдВ: C ++ рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдЕрдиреБрдХреВрд▓рди

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


рдореВрд▓ рдЖрд╡реЗрджрди рддреЗрдЬреА рд╕реЗ рдХреИрд╕реЗ рдХрд░реЗрдВ


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


рдЬрдм WhBranchIsTaken рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЛ рдпрд╣ рдкрддрд╛ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ рдХрд┐ "b" рдкреИрд░рд╛рдореАрдЯрд░ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ "рдкреИрд░рд╛рдореАрдЯрд░" рдХрд┐рддрдиреА рдмрд╛рд░ рдХрдо рд╣реЛрдЧрд╛, рдФрд░ рдХрд┐рддрдиреА рдмрд╛рд░ "рдпрджрд┐" рд╕реНрдерд┐рддрд┐ рд▓рд╛рдЧреВ рд╣реЛрдЧреА (рдпрд╛рдиреА, рдХрдВрдкрд╛рдЗрд▓рд░ рдмреНрд░рд╛рдВрдЪрд┐рдВрдЧ рдХрд╛ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛ рд╕рдХрддрд╛ рд╣реИ)ред рдЬрдм рд╡рд┐рдЪрд▓рди рдФрд░ switchCaseExpansion рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЛ * p рдФрд░ i рдорд╛рдиреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рдкрддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рд╡рд┐рдЪрд▓рди рдФрд░ рдкреИрд░рд╛рдореАрдЯрд░ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХрд╛ рдЕрдиреБрдХреВрд▓рди рдХрд░рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рд╣рдо рдЗрд╕ рдХреЛрдб рдХреЗ рдЯреБрдХрдбрд╝реЗ рдХреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдореЙрдбреНрдпреВрд▓ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЕрд▓рдЧ-рдЕрд▓рдЧ рдСрдмреНрдЬреЗрдХреНрдЯ рдлрд╝рд╛рдЗрд▓реЛрдВ) рдореЗрдВ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпреЗ рд╕рдорд╕реНрдпрд╛рдПрдВ рдФрд░ рднреА рддреЗрдЬ рд╣реЛ рдЬрд╛рдПрдВрдЧреА, рдХреНрдпреЛрдВрдХрд┐ рдкрд╛рд░рдВрдкрд░рд┐рдХ рд╕рдВрдХрд▓рди рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд╕реНрд░реЛрдд рдореЙрдбреНрдпреВрд▓ рдХреЗ рднреАрддрд░ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдХреВрд▓рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдХрдВрдкрд╛рдЗрд▓рд░ рдФрд░ рд▓рд┐рдВрдХрд░ рдХрд╛ рдореВрд▓ рдореЙрдбрд▓ рдЗрддрдирд╛ рдмреБрд░рд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдореЗрдВ рдЕрдиреБрдХреВрд▓рди рдХреЗ рджреЛ рдореБрдЦреНрдп рдЕрд╡рд╕рд░реЛрдВ рдХрд╛ рдЕрднрд╛рд╡ рд╣реИред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдпрд╣ рдЙрди рд╕реВрдЪрдирд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рд╕рднреА рд╕реНрд░реЛрдд рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ (рдкрд╛рд░рдВрдкрд░рд┐рдХ рд╕рдВрдХрд▓рдХ рдХреЗрд╡рд▓ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдСрдмреНрдЬреЗрдХреНрдЯ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рдЕрдиреБрдХреВрд▓рди рдХрд░рддреЗ рд╣реИрдВ)ред рджреВрд╕рд░реЗ, рдпрд╣ рдЖрд╡реЗрджрди рдХреА рдЕрдкреЗрдХреНрд╖рд┐рдд рдпрд╛ рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЕрдиреБрдХреВрд▓рди рдХреЛ рдкреВрд░рд╛ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдкрд╣рд▓рд╛ рджреЛрд╖ рдХрдВрдкрд╛рдЗрд▓рд░ рд╕реНрд╡рд┐рдЪ ( / GL ) рдпрд╛ рд▓рд┐рдВрдХрд░ рд╕реНрд╡рд┐рдЪ ( / LTCG ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рддрдп рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬреЛ рдкреВрд░реНрдг рдкреНрд░реЛрдЧреНрд░рд╛рдо рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝реЗрд╢рди рдХрд░рддрд╛ рд╣реИ рдФрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдкреВрд░реНрдг рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рдЕрдиреБрдХреВрд▓рди рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдк рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдЕрдиреБрдХреВрд▓рди рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЖрдЗрдП рд╣рдо рдЗрд╕ рдкрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдзреНрдпрд╛рди рджреЗрдВред
рдкреАрдЬреАрдУ рдПрдХ рдХрдВрдкрд╛рдЗрд▓рд░ рд░рдирдЯрд╛рдЗрдо рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝реЗрд╢рди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╣реИ рдЬреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рдпрд╛ рдЙрдЪреНрдЪ-рдкреНрд░рджрд░реНрд╢рди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рджреМрд░рд╛рди рдПрдХрддреНрд░ рдХрд┐рдП рдЧрдП рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдбреЗрдЯрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝реЗрд╢рди рдХреЗ рдкрд╛рд░рдВрдкрд░рд┐рдХ рд╕реНрдерд┐рд░ рдЕрдиреБрдХреВрд▓рди рдкрд░ рдХрдИ рдлрд╛рдпрджреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддрд╛ рд╣реИ рдХрд┐ рдЖрд╡реЗрджрди рдХреИрд╕реЗ рдЙрддреНрдкрд╛рджрди рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░реЗрдЧрд╛ред рдЗрд╕рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝рд░ рдЧрддрд┐ рдЕрдиреБрдХреВрд▓рди (рд▓рдЧрд╛рддрд╛рд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП) рдпрд╛ рдЖрдХрд╛рд░ рдЕрдиреБрдХреВрд▓рди (рджреБрд░реНрд▓рдн рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП) рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдирддреАрдЬрддрди, рдХреЛрдб рдЕрдзрд┐рдХ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдЕрдВрддрддрдГ рдЖрд╡реЗрджрди рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░рддрд╛ рд╣реИред



рд╡рд░реНрддрдорд╛рди рдореЗрдВ, рдкреАрдЬреАрдУ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреЗрд╡рд▓ рдХреНрд▓рд╛рд╕рд┐рдХ рдбреЗрд╕реНрдХрдЯреЙрдк рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдкрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ x86 рдФрд░ x64 рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдкрд░ рд╕рдорд░реНрдерд┐рдд рд╣реИред рдкреАрдЬреАрдУ рдПрдХ рддреАрди-рдЪрд░рдгреАрдп рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ рдХреА рдЖрдХреГрддрд┐ рдореЗрдВ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред



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

рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдЕрдиреБрдХреВрд▓рди рдХрд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧ


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



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



рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдПрдкреНрд▓реАрдХреЗрд╢рди рдХреЗ рдЗрдВрд╕реНрдЯреНрд░реВрдореЗрдВрдЯреЗрдб рд╡рд░реНрдЬрди рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░реЗрдЧрд╛ред рдЙрд╕рдХреЗ рдмрд╛рдж, рдЖрдк рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдЪрд░рдг рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдмрдврд╝ рд╕рдХрддреЗ рд╣реИрдВред рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдЗрдВрд╕реНрдЯреНрд░реВрдореЗрдВрдЯреЗрдб рд╡рд░реНрдЬрди рдХреЛ рд▓реЙрдиреНрдЪ рдХрд░реЗрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, "рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдирд┐рд░реНрджреЗрд╢рд┐рдд рдЕрдиреБрдХреВрд▓рди" рдореЗрдиреВ рдкрд░ рдЬрд╛рдПрдВ рдФрд░ "рдЗрдВрд╕реНрдЯреНрд░реВрдореЗрдВрдЯреЗрдб / рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝реНрдб рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЪрд▓рд╛рдПрдБ" рдХрд╛ рдЪрдпрди рдХрд░реЗрдВред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рд╕рдмрд╕реЗ рдмрдбрд╝реА рдХреЛрдб рдмреЙрдбреА (15360) рдХреЗ рд╕рд╛рде рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдПрдХ рд╕реНрдерд┐рд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдЬрд┐рд╕реЗ рдЙрдЪреНрдЪ рдкреНрд░рджрд░реНрд╢рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдПрдХ рдмрд╛рд░ рдЖрд╡реЗрджрди рдкреНрд░рджрд░реНрд╢рди рдХреЗ рджреЛ рдореБрдЦреНрдп рд╕рдВрдХреЗрддрдХ - рдПрдлрдкреАрдПрд╕ (рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб рдлреНрд░реЗрдо) рдФрд░ рдЬреАрдПрдлрдПрд▓рдУрдкреА - рд╕реНрдерд┐рд░ рд╣реИрдВ, рдЖрдк рдЖрд╡реЗрджрди рдХреЛ рдмрдВрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕ рд╕реНрддрд░ рдкрд░, рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдЪрд░рдг рдкреВрд░рд╛ рд╣реЛ рдЬрд╛рдПрдЧрд╛, рдФрд░ рдкреНрд░рд╛рдкреНрдд рдбреЗрдЯрд╛ рдХреЛ рдПрдХ .pgc рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕рд╣реЗрдЬрд╛ рдЬрд╛рдПрдЧрд╛ред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ .pgc рдлрд╝рд╛рдЗрд▓ рдЖрдкрдХреЗ рдмрд┐рд▓реНрдб рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХреА рдЬрд╛рдПрдЧреА, рдЕрд░реНрдерд╛рдд рдХреИрдЯрд▓реЙрдЧ "рд░рд┐рд▓реАрдЬрд╝"ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЗрд╕ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдлрд╝рд╛рдЗрд▓ NBodyGravityCPU! 1.pgc рдмрдирд╛рдИ рдЧрдИ рд╣реИред



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



рдкреАрдЬреАрдУ рдХреЗ рдЕрдВрддрд┐рдо рдЪрд░рдг рдХреЗ рджреМрд░рд╛рди, рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рдПрдХ рдЕрдиреБрдХреВрд▓рд┐рдд рд╕рдВрд╕реНрдХрд░рдг рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдирд┐рд░реНрджреЗрд╢рд┐рдд рдЕрдиреБрдХреВрд▓рди рдореЗрдиреВ рд╕реЗ, рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝ рдХрд░реЗрдВ рдЪреБрдиреЗрдВред рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рдПрдХ рдЕрдиреБрдХреВрд▓рд┐рдд рд╕рдВрд╕реНрдХрд░рдг рдмрдирд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдкреАрдЬреАрдУ рдмрд┐рд▓реНрдб рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рд▓реЙрдЧ рдореЗрдВ, рдЖрдк рдкреНрд░рджрд░реНрд╢рди рдХрд┐рдП рдЧрдП рдСрдкрд░реЗрд╢рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рд╛рдорд╛рдиреНрдпреАрдХреГрдд рдЬрд╛рдирдХрд╛рд░реА рджреЗрдЦреЗрдВрдЧреЗред
рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдЪрд░рдг рдХреЗ рджреМрд░рд╛рди рдкреНрд░рд╛рдкреНрдд .pgc рдлрд╝рд╛рдЗрд▓реЛрдВ рд╕реЗ рдЬрд╛рдирдХрд╛рд░реА .pgd рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИ, рдЬреЛ рддрдм рдЖрдВрддрд░рд┐рдХ рд╕рдВрдХрд▓рдХ рдХреЗ рдЕрдиреБрдХреВрд▓рди рдореИрдЯреНрд░рд┐рдХреНрд╕ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рддреА рд╣реИред рдЬреНрдпрд╛рджрд╛рддрд░ рдорд╛рдорд▓реЛрдВ рдореЗрдВ (рдЫреЛрдЯреЗ рддреЗрдЬ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рдЕрдкрд╡рд╛рдж рдХреЗ рд╕рд╛рде), рдЧрддрд┐ / рдЖрдХрд╛рд░ рдЕрдиреБрдХреВрд▓рди рдорд╛рдирджрдВрдб рдПрдХ рд╡рд┐рд╢реЗрд╖ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдЧрддрд┐рд╢реАрд▓ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЗ рдЕрдиреБрдкрд╛рдд рд╕реЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╣реЛрддрд╛ рд╣реИред рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рд░реНрдп (рддрдерд╛рдХрдерд┐рдд "рд╣реЙрдЯ") рдЧрддрд┐ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдХреВрд▓рд┐рдд рд╣реЛрддреЗ рд╣реИрдВ, рдФрд░ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреА рдПрдХ рдЫреЛрдЯреА рд╕рдВрдЦреНрдпрд╛ (рддрдерд╛рдХрдерд┐рдд "рдардВрдб") рдХреЗ рд╕рд╛рде, рд╡реЗ рдЖрдХрд╛рд░ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдХреВрд▓рд┐рдд рд╣реЛрддреЗ рд╣реИрдВред
рдпрд╣ рд▓рдЧрднрдЧ рд╕рднреА рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдЕрдиреБрдХреВрд▓рди рд╢реБрд░реВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЕрдкрдиреЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП PGO рдЖрдЬрд╝рдорд╛рдПрдВ рдФрд░ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░реЗрдВ! рдФрд░ рдбреЗрд╡рд▓рдкрд░ рдЯреВрд▓ рдмреНрд▓реЙрдЧ рдХреЛ рджреЗрдЦрдирд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ, рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рд╡рд╣рд╛рдВ рдХреБрдЫ рдЕрдиреНрдп рджрд┐рд▓рдЪрд╕реНрдк рд╕рдорд╛рдзрд╛рди рдорд┐рд▓реЗрдВрдЧреЗ!
Microsoft Visual C ++ рдЗрдВрдЯрд░рдирд▓ рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЗ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдореИрдиреЗрдЬрд░ рдЕрдВрдХрд┐рдд рдЕрд╕реНрдерд╛рдирд╛ рджреНрд╡рд╛рд░рд╛ рдкреЛрд╕реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ред

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


All Articles