рдпрд╣ рд▓реЗрдЦ рдХрд╛ рдЕрдиреБрд╡рд╛рдж рд╣реИ " рдХреИрд╕реЗ рднрдпрд╛рдирдХ рдХреЛрдб рдмрдирд╛рдиреЗ рдореЗрдВ рд╕реА / рд╕реА ++ рд╕рдВрдХрд▓рдХ рдХреЛ рдзреЛрдЦрд╛ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП? ", рдореВрд▓ рдХреЗ рд▓реЗрдЦрдХ рдПрдЯрд░ рд╕реБрд▓реЗрдорд╛рди рд╣реИрдВредрдХрдВрдкреНрдпреВрдЯрд░ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдореЗрдВ рдПрдХ рдХреЛрд░реНрд╕ рдкрд░, рдЙрдиреНрд╣реЛрдВрдиреЗ рдореБрдЭреЗ рдмрддрд╛рдпрд╛ рдХрд┐ рдкреНрд░реЛрд╕реЗрд╕рд░ рдПрдХ рдорд╢реАрди рдХреА рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИред рд╕реНрдЯреАрдпрд░рд┐рдВрдЧ рд╡реНрд╣реАрд▓ рдФрд░ рдкреИрдбрд▓ ISA рд╣реИрдВ, рдЗрдВрдЬрди рдорд╛рдЗрдХреНрд░реЛрдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рд╣реИ, рдФрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдбреНрд░рд╛рдЗрд╡рд░ рд╣реИред рдЗрд╕ рд╕рд╛рджреГрд╢реНрдп рдХреЛ рдЬрд╛рд░реА рд░рдЦрддреЗ рд╣реБрдП, рдореИрдВ рдХрд╣реВрдВрдЧрд╛ рдХрд┐ рдХрдВрдкреНрдпреВрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рд░рд┐рдореЛрдЯ рдХрдВрдЯреНрд░реЛрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдорд╢реАрди рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд╕рдорд╛рди рд╣реИред рдХрдВрд╕реЛрд▓ рдПрдХ рд╢рд╛рдВрдд рдЪреАрдЬ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рд╛рде рд╣реА рдпрд╣ рд╕рдордЭрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдкреЗрд╢реЗрд╡рд░ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдореЗрдВ, рдореИрдВрдиреЗ рдХрдИ рдХреЛрдб рдЙрджрд╛рд╣рд░рдг рджреЗрдЦреЗ рд╣реИрдВ рдЬреЛ рд╕рдмрд╕реЗ рд╕реНрдорд╛рд░реНрдЯ рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЛ рднреА рднреНрд░рдорд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рдореИрдВ рдХрдВрдлрд╝рд░реНрдЯ рдХрд░рдиреЗ рд╡рд╛рд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдмреБрдирд┐рдпрд╛рджреА рддрд░реАрдХреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реВрдБрдЧрд╛ред
рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рдореИрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХрдВрдкрд╛рдЗрд▓рд░реЛрдВ рдХреА рдЪрд░реНрдЪрд╛ рдореЗрдВ рдЧреЛрддрд╛ рд▓рдЧрд╛рдКрдВ, рдореИрдВ рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рдбрд┐рд╕реНрдХреНрд▓реЗрдорд░ рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ: рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореМрдЬреВрджрд╛ рдХрдВрдкрд╛рдЗрд▓рд░реНрд╕ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХреА рдЬрд░реВрд░рдд рд╣реИ, рдореБрдЭреЗ рднреА рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХрдВрдкрд╛рдЗрд▓рд░реНрд╕ рдореЗрдВ рд╣рдореЗрд╢рд╛ рдЕрдбрд╝рдЪрдиреЗрдВ рдЖрдПрдВрдЧреА рдЬрд╣рд╛рдВ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЛ рдЙрдирдХреА рдереЛрдбрд╝реА рдорджрдж рдХрд░рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реЛрдЧреАредcompilers
рд╕рдВрдХрд▓рдХ рдЖрдкрдХреЗ рдХреЛрдб рдХреЛ рдЙрдЪреНрдЪ-рд╕реНрддрд░реАрдп рднрд╛рд╖рд╛ рдореЗрдВ рд▓реЗрддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдорд╢реАрди рдХреЛрдб рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рддрд╛ рд╣реИред рдХрдВрдкрд╛рдЗрд▓рд░ рдХреА рдХрд╛рд░реНрдп рдпреЛрдЬрдирд╛ рдХреБрдЫ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:
- рдХреЛрдб рдХреА рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдХрд░реЗрдВ рдФрд░ рдЗрд╕рдХреЗ рдордзреНрдпрд╡рд░реНрддреА рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░реЗрдВред
- рдордзреНрдпрд╡рд░реНрддреА рдкреНрд░рд╕реНрддреБрддрд┐ рдХрд╛ рдЕрдиреБрдХреВрд▓рди рдХрд░реЗрдВред
- рдорд╢реАрди рдХреЛрдб рдЬрдирд░реЗрдЯ рдХрд░реЗрдВред
- рд▓рд┐рдВрдХ (рд▓реЗрдЖрдЙрдЯ)ред
рдХреЛрдб рдХреЛ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЛ рдПрдХ рдмрд╣реБрдд рдмрдбрд╝рд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдЙрджрд╛рд╣рд░рдг рдореГрдд рдХреЛрдб (DCE) рдХреЛ рд╣рдЯрд╛ рд░рд╣рд╛ рд╣реИред DCE рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддреЗ рд╕рдордп, рдХрдВрдкрд╛рдЗрд▓рд░ рдЙрд╕ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╕реЗ рдХреЛрдб рдХреЛ рдмрд╛рд╣рд░ рдХрд░ рджреЗрддрд╛ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдирд┐рд╖реНрдкрд╛рджрди рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд▓рд╛рдЗрдиреЛрдВ 3 рдФрд░ 4 рдореЗрдВ рд▓реВрдк рдХреЛ рд╕рдВрдХрд▓рдХ рджреНрд╡рд╛рд░рд╛ рдмрд╛рд╣рд░ рд░рдЦрд╛ рдЬрд╛рдПрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рд▓реВрдк рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдХрд╣реАрдВ рднреА рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
1: void foo(){ 2: int x; 3: for(int i = 0; i < N; i++) 4: x += i; 5: }
DCE рдкреНрд░рджрд░реНрд╢рди рдХрд░рддреЗ рд╕рдордп, рдХрдВрдкрд╛рдЗрд▓рд░ рдбреЗрдЯрд╛ рд╕реНрдЯреНрд░реАрдо рдХрд╛ рдПрдХ рдбрд┐рдл-рдпреВрдЬрд╝ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХреМрди рд╕реЗ рдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрд╣ рдЗрди рдЕрдкреНрд░рдпреБрдХреНрдд рдЪрд░ рдХреЛ рд▓рд┐рдЦрдиреЗ рд╡рд╛рд▓реА рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рд╣рдЯрд╛ рджреЗрддрд╛ рд╣реИред рд╕рдВрдХрд▓рдХ рдХреЗ рд▓рд┐рдП DCE рдФрд░ рдЗрд╕реА рддрд░рд╣ рдХреЗ рдЕрдиреНрдп рдЕрдиреБрдХреВрд▓рди рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╣ 100% рдирд┐рд╢реНрдЪрд┐рддрддрд╛ рдХреЗ рд╕рд╛рде рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдХреНрдпрд╛ рдЪрд░ рдПрдХреНрд╕реЗрд╕ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдпрд╣ рд╡рд╣ рдЬрдЧрд╣ рд╣реИ рдЬрд╣рд╛рдБ рд╕рдВрдХрд▓рдХ рдХреЛ рдЦреЛрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрднрд╛рд╡рдирд╛рдУрдВ рдХреЛ рдЦреЛрд▓рдирд╛ рд╣реИред рд╣рдо рдХрдИ рдкреНрд░рд╕рд┐рджреНрдз рдЕрдбрд╝рдЪрдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдлрдВрдХреНрд╢рди рдХреЙрд▓
рдХрдВрдкрд╛рдЗрд▓рд░ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдПрдХ рдмрд╣реБрдд рд╣реА рдЬрдЯрд┐рд▓ рдХрдореНрдкреНрдпреВрдЯреЗрд╢рдирд▓ рдХрд╛рд░реНрдп рд╣реИред рд╕рдВрджрд░реНрдн рдХреЗ рд▓рд┐рдП, рд╕рдВрдХрд▓рдХ рдХрд╛ рдХреЛрдб рд╢рд╛рдпрдж рджреБрдирд┐рдпрд╛ рдХрд╛ рд╕рдмрд╕реЗ рдЬрдЯрд┐рд▓ рдХреЛрдб рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЕрдиреБрдХреВрд▓рди рд╕рдорд╕реНрдпрд╛рдПрдВ рдмрд╣реБрдд рдЬрд▓реНрджреА рд╕реНрд╡рдпрдВ рдкреНрд░рдХрдЯ рд╣реЛрддреА рд╣реИрдВред рдЙрдЪрд┐рдд рд╕реАрдорд╛ рдХреЗ рднреАрддрд░ рд╕рдВрдХрд▓рди рд╕рдордп рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП, рдХрдВрдкрд╛рдЗрд▓рд░ рдЕрдХреНрд╕рд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рджрд╛рдпрд░реЗ рдХреЛ рдХрд╛рд░реНрдпреЛрдВ рддрдХ рд╕реАрдорд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд╕реАрдорд┐рдд рдЕрдВрддрд░-рдкреНрд░рдХреНрд░рд┐рдпрд╛рддреНрдордХ рд╡рд┐рд╢реНрд▓реЗрд╖рдг (рдЖрдИрдкреАрдП) рдпрд╛ рдмрд┐рд▓реНрдХреБрд▓ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдПрдХ рд╕рдВрдХрд▓рдХ рдЬреЛ рд╕реНрд╡рддрдВрддреНрд░ рд╕рдВрд╕реНрдерд╛рдУрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИ, рдПрдХ рд╕рд╛рде рдХрдИ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред
рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ рдХреА рдХрдИ рдкрд░рддреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдирд╛, рдЖрджрд░реНрд╢ рд░реВрдк рд╕реЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рднреА рдмрд┐рдЦрд░реЗ рд╣реБрдП рд╣реИрдВ, рдЕрдХреНрд╕рд░ рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЛ рднреНрд░рдорд┐рдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рд╣реИред
рдЖрдЗрдП рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдХреЛ рджреЗрдЦреЗрдВ:
void foo(){ int x; for(int i = 0; i < N; i++) x += bar(i); }
рдФрд░ рджреВрд╕рд░реА рдлрд╛рдЗрд▓ рдореЗрдВ:
int bar(int i){ return i; }
рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рд╕реЛрдЪ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдпрд╣рд╛рдВ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕рдВрд╕рд╛рдзрди рдХреЗрд╡рд▓
bar()
рдХреЙрд▓ рдкрд░ рдЦрд░реНрдЪ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐,
foo()
рд╕рдВрдХрд▓рди рдХреЗ рджреМрд░рд╛рди
foo()
рдХрдВрдкрд╛рдЗрд▓рд░ рдЙрд╕
bar()
рдХреЛ рдирд╣реАрдВ рджреЗрдЦ рд╕рдХрддрд╛
bar()
рдХрд╛ рдХреЛрдИ рд╕рд╛рдЗрдб рдЗрдлреЗрдХреНрдЯ рдирд╣реАрдВ рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ рдПрдХ рд╡реИрд╢реНрд╡рд┐рдХ рдЪрд░ рдпрд╛ рдЖрдИ / рдУ рдкрд░ рд▓рд┐рдЦрдирд╛ред рдЗрд╕рд▓рд┐рдП, рдпрд╣ DCE рдХреЛ рдирд┐рд╖реНрдХреНрд░рд┐рдп рдХрд░ рджреЗрддрд╛ рд╣реИ, рдФрд░ рдмреЗрдХрд╛рд░ рд▓реВрдк рднреА рдЕрдм рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрдЧрд╛ред рдкрд░рд┐рдгрд╛рдо рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЧрд┐рд░рд╛рд╡рдЯ рд╣реЛ рд╕рдХрддреА рд╣реИред
рд╕рдВрдХреЗрдд
рдореИрдВрдиреЗ рдХрдИ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░реНрд╕ рдХреЛ рджреЗрдЦрд╛ рд╣реИ рдЬреЛ рдЕрдирд╛рд╡рд╢реНрдпрдХ рд░реВрдк рд╕реЗ рдкреЙрдЗрдВрдЯрд░реНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рд╕рдВрдХреЗрдд рджреЗрдиреЗ рд╡рд╛рд▓реЛрдВ рдХреЗ рд▓рд┐рдП, рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреА рдмрд░реНрдмрд╛рджреА рдХрд╛ рдореБрдЦреНрдп рд╕реНрд░реЛрдд рдЙрдирдХреА рдбреАрдлреНрд░реЗрдВрд╕рд┐рдВрдЧ (рдпрджрд┐ рдХреЛрдИ рд╣реЛ) рд╣реИред рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ, рд╡реЗ рдЕрдзрд┐рдХ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рдЬрд▓рд╛ рджреЗрддреЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рд╕рдВрдХрд▓рдХ рдХреЛ рднреНрд░рдорд┐рдд рдХрд░рддреЗ рд╣реИрдВред
рдПрдХ рд╕рдВрдХреЗрддрдХ, рд╕реИрджреНрдзрд╛рдВрддрд┐рдХ рд░реВрдк рд╕реЗ, рд╕реНрдореГрддрд┐ рдореЗрдВ рдХрд┐рд╕реА рднреА рд╕реНрдерд╛рди рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдПрдХ рдмрд╛рд░ рдЬрдм рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЛрдб рдореЗрдВ рдПрдХ рдкреЙрдЗрдВрдЯрд░ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдХреМрди рд╕реЗ рдЪрд░ рдПрдХреНрд╕реЗрд╕ рдХрд┐рдП рдЬрд╛рдПрдВрдЧреЗред рдЗрд╕рд▓рд┐рдП, рдЙрдирдХрд╛ рд╕реБрдЭрд╛рд╡ рд╣реИ рдХрд┐ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдХрдИ рдЪрд░ рдПрдХ рдкреЙрдЗрдВрдЯрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкрд╣реБрдБрдЪрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╕рдВрдХрд▓рдХ рдХреА рдЖрдБрдЦреЛрдВ рдореЗрдВ, рдпрд╣ рдЕрдХреНрд╕рд░ рдЭреВрдареА рдирд┐рд░реНрднрд░рддрд╛ рдХрд╛ рдПрдХ рдЧреБрдЪреНрдЫрд╛ рдмрдирд╛рддрд╛ рд╣реИред рдореЗрд░рд╛ рдХреНрд▓рд╛рд╕рд┐рдХ рдЙрджрд╛рд╣рд░рдг рдпрд╣ рд▓реВрдк рд╣реИ (рдореИрдВрдиреЗ рдЗрд╕реЗ рдЗрдореЗрдЬ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдореЗрдВ рдкрд╛рдпрд╛):
for(int i = 0; i < N; i++) *a++ = *b++ + *c++;
рд╕рд╛рд╡рдзрд╛рдиреАрдкреВрд░реНрд╡рдХ рдЕрдзреНрдпрдпрди рдХреЗ рдмрд╛рдж, рдПрдХ рд╡реНрдпрдХреНрддрд┐ рдпрд╣ рд╕рдордЭ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдХреЛрдб рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рд┐рд░реНрдл рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд░рддрд╛ рд╣реИ:
for(int i = 0; i < N; i++) a[i] = b[i] + c[i]; a += N; b += N; c += N;
рдкрд╣рд▓рд╛ рдХреЛрдб рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЛ рднреНрд░рдорд┐рдд рдХрд░рддрд╛ рд╣реИред рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЕрдЧрд░ рд▓реВрдк рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпрд╛рдВ рд╕реНрд╡рддрдВрддреНрд░ рд╣реИрдВ, рддреЛ рд╕рдВрдХрд▓рдХ рдЙрдиреНрд╣реЗрдВ рдЗрд╕ рддрд░рд╣ рдирд╣реАрдВ рдорд╛рдирддреЗ рд╣реИрдВ; рдЗрд╕ рдХрд╛рд░рдг рд╕реЗ, рдпрд╣ рдХрд┐рд╕реА рджрд┐рдП рдЧрдП рдХреЛрдб рдХреЛ рд╡реЗрдХреНрдЯрд░ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рджреВрд╕рд░рд╛ - рд╢рд╛рдпрджред
рд╕рдВрджрд░реНрдн рдХреЗ рд▓рд┐рдП: рд╡реЗрдХреНрдЯрд░ рдХреЛрдб 5 рдЧреБрдирд╛ рддреЗрдЬреА рд╕реЗ рдЪрд▓рддрд╛ рд╣реИред рдорд▓реНрдЯреА-рдереНрд░реЗрдбреЗрдб рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗ рдереЛрдбрд╝реЗ рдкреНрд░рдпрд╛рд╕ рд╕реЗ 4 рдХреЛрд░ рдкрд░ 4 рдЧреБрдирд╛ рд╡реГрджреНрдзрд┐ рджреЗ рд╕рдХрддреЗ рд╣реИрдВред рдПрдХ рд╣реА рдХреЛрдб, рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╡реЗрдХреНрдЯрд░рдХреГрдд, рдмрд┐рдирд╛ рдХрд┐рд╕реА рдкреНрд░рдпрд╛рд╕ рдХреЗ 5 рдЧреБрдирд╛ рдХреА рдЧрддрд┐ рдмрдврд╝рд╛рддрд╛ рд╣реИред рдореИрдВрдиреЗ Intel C Compiler (ICC) 9.1 рдФрд░ GCC 4.1 рдХреА рдХреЛрд╢рд┐рд╢ рдХреАред рдкрд░рд┐рдгрд╛рдо рдЖрдИрд╕реАрд╕реА рдХреЗ рд▓рд┐рдП рд╣реИрдВредрдпрджрд┐ рдЕрдзрд┐рдХ рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ рд╣реИрдВ, рддреЛ рд╡реИрд╢реНрд╡рд┐рдХ рдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ
рд╡реИрд╢реНрд╡рд┐рдХ рдЪрд░ рдХрдИ рдХрд╛рд░рдгреЛрдВ рд╕реЗ рдмреБрд░рд╛рдИ рдорд╛рдиреЗ рдЬрд╛рддреЗ рд╣реИрдВред рдореИрдВ рдПрдХ рдФрд░ рд▓рд╛рдКрдВрдЧрд╛ред рдХреНрдпреЛрдВрдХрд┐ рдЙрдирдХреЗ рдкрд╛рд╕ рд╡реИрд╢реНрд╡рд┐рдХ рдЧреБрдВрдЬрд╛рдЗрд╢ рд╣реИ, рд╡реИрд╢реНрд╡рд┐рдХ рдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХреЛрдб рдХреЛ рдХрдВрдкрд╛рдЗрд▓рд░ рджреНрд╡рд╛рд░рд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрдиреБрдХреВрд▓рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рджреЗрдЦрд╛ рдХрд┐ рдпрджрд┐ рдЪрд░
N
рд╕реНрдерд╛рдиреАрдп рд╣реИ, рддреЛ рдирд┐рдореНрди рдХреЛрдб 30% рддреЗрдЬреА рд╕реЗ рдЪрд▓рддрд╛
N
, рд╡реИрд╢реНрд╡рд┐рдХ рдирд╣реАрдВред
for(int i = 0; i < N; i++) a[i] = b[i] + c[i];
рдЬрдм рдЖрдк рд╡реЗрд░рд┐рдПрдмрд▓
N
рдЧреНрд▓реЛрдмрд▓ рдШреЛрд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдХрдВрдкрд╛рдЗрд▓рд░ рдЗрд╕реЗ рдореЗрдореЛрд░реА рдореЗрдВ рдЫреЛрдбрд╝ рджреЗрддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рд▓реВрдк рдореЗрдВ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рдирд┐рд░реНрджреЗрд╢ рдЬреЛрдбрд╝рддрд╛ рд╣реИред рдпрджрд┐
N
рд╕реНрдерд╛рдиреАрдп рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛
N
, рддреЛ рд╕рдВрдХрд▓рдХ рдЗрд╕реЗ рд░рдЬрд┐рд╕реНрдЯрд░ рдореЗрдВ рд▓реЛрдб рдХрд░рддрд╛ рд╣реИред рдЖрдк рд╕рдВрдХрд▓рдХ рдХреЗ рдЗрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рджреЛрд╖ рджреЗ рд╕рдХрддреЗ рд╣реИрдВ (рдХреНрдпреЛрдВрдХрд┐ рдПрди
volatile
рдирд╣реАрдВ рд╣реИ), рд▓реЗрдХрд┐рди рдЖрдкрдХреЛ рдЬреЛ рд╣реИ рдЙрд╕рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
рдирд┐рд╖реНрдХрд░реНрд╖
рдЬрдм рдЖрдк C / C ++ рдореЗрдВ рдХреЛрдб рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рддреЛ IPA рдФрд░ рдкреЙрдЗрдВрдЯрд░реНрд╕ рдХреЛ рдпрд╛рдж рд░рдЦрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред рддреЛ рдЖрдк рдХрдВрдкрд╛рдЗрд▓рд░ рдЬрдирд░реЗрдЯ рдХреЛрдб рдХреА рдорджрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рддреЗрдЬреА рд╕реЗ рдЪрд▓реЗрдЧрд╛ред
рд╡реИрд╕реЗ: рдореИрдВрдиреЗ рджреЗрдЦрд╛ рдХрд┐ рдЬреАрд╕реАрд╕реА рдФрд░ рдЖрдИрд╕реАрд╕реА рджреЛрдиреЛрдВ рд▓рд┐рдВрдХ рдСрд░реНрдбрд░ рдХреЗ рдкреНрд░рддрд┐ рд╕рдВрд╡реЗрджрдирд╢реАрд▓ рд╣реИрдВ, рдЕрд░реНрдерд╛рддреНред рдЙрддреНрдкрдиреНрди рдХреЛрдб рдЙрд╕ рдХреНрд░рдо рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд▓рд┐рдВрдХрд░ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдкрд░ рдЗрдирдкреБрдЯ рдлрд╛рдЗрд▓реЗрдВ рд╕реВрдЪреАрдмрджреНрдз рд╣реЛрддреА рд╣реИрдВред рдпрд╣ рдХреИрд╢рд┐рдВрдЧ рдФрд░ рд╢рд╛рдЦрд╛ рдХреА рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгреА рдХреЗ рдХрд╛рд░рдг рдкреНрд░рджрд░реНрд╢рди рдкрд░ рдПрдХ рдордЬрдмреВрдд рдкреНрд░рднрд╛рд╡ (10% рддрдХ) рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдорд╣рддреНрд╡ рджреЗрддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рд▓рд┐рдВрдХрд┐рдВрдЧ рдСрд░реНрдбрд░ рдХреЗ рд╕рд╛рде рдЦреЗрд▓рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдПред