рдпрд╣ рд╡реНрдпрд╛рдкрдХ рд░реВрдк рд╕реЗ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдЬреАрд╕реАрд╕реА рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рдЕрдиреНрдп рд╕рдВрдХрд▓рдХреЛрдВ рд╕реЗ рдкреАрдЫреЗ рд╣реИред рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рд╣рдо рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВрдЧреЗ рдХрд┐ рд╕реНрд╡реАрдХрд╛рд░реНрдп рдкреНрд░рджрд░реНрд╢рди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмреБрдирд┐рдпрд╛рджреА рдЬреАрд╕реАрд╕реА рд╕рдВрдХрд▓рдХ рдЕрдиреБрдХреВрд▓рди рдХрд╛ рдХреНрдпрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдЬреАрд╕реАрд╕реА рдореЗрдВ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╡рд┐рдХрд▓реНрдк рдХреНрдпрд╛ рд╣реИрдВ?
(1) рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, GCC рдЕрдиреБрдХреВрд▓рди рд╕реНрддрд░ "-O0" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдЗрд╖реНрдЯрддрдо рдирд╣реАрдВ рд╣реИ рдФрд░ рдЕрдВрддрд┐рдо рдЙрддреНрдкрд╛рдж рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдиреБрд╢рдВрд╕рд┐рдд рдирд╣реАрдВ рд╣реИред
рдЬреАрд╕реАрд╕реА рдЙрд╕ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХреЛ рдорд╛рдиреНрдпрддрд╛ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ рдЬрд┐рд╕ рдкрд░ рд╕рдВрдХрд▓рди "рдореЛрд░реНрдЪ = рджреЗрд╢реА" рдкрд╛рд╕ рд╣реЛрдиреЗ рддрдХ рдЪрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдЬреАрд╕реАрд╕реА рдЕрдкрдиреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рджреМрд░рд╛рди рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╡рд┐рдХрд▓реНрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдЬреАрд╕реАрд╕реА рдХреЗ рд╡рд┐рдиреНрдпрд╛рд╕ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдмрд╕ рдЪрд▓рд╛рдПрдВ:
рдЬреАрд╕реАрд╕реА -v "рдХреЗ рд╕рд╛рде рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛: [рдкрде] / рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ ... - рд╕рд╛рде-рдЖрд░реНрдХ = corei7 --with-cpu = corei7 ..." |
рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЬреАрд╕реАрд╕реА рдЖрдкрдХреЗ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдореЗрдВ "-рдорд░рдЪ = рдХреЛрд░реА 7" рдЬреЛрдбрд╝ рджреЗрдЧрд╛ (рдЬрдм рддрдХ рдХрд┐ рдПрдХ рдЕрд▓рдЧ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ)ред
X86 рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХрд╛рдВрд╢ GCC рдХрдВрдкрд╛рдЗрд▓рд░ (64-рдмрд┐рдЯ рд▓рд┐рдирдХреНрд╕ рдХреЗ рд▓рд┐рдП рдмреБрдирд┐рдпрд╛рджреА) рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ: рджрд┐рдП рдЧрдП рд╡рд┐рдХрд▓реНрдкреЛрдВ рдореЗрдВ "-mtune = generic -march = x86-64", рдХреНрдпреЛрдВрдХрд┐ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЖрдк рд╣рдореЗрд╢рд╛ рдЙрди рд╕рднреА рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдЬреАрд╕реАрд╕реА рд╢реБрд░реВ рдХрд░рддреЗ рд╕рдордп рдкрд╛рд░рд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рд╕рд╛рде рд╣реА рдХрдорд╛рдВрдб рдХреЗ рдЙрдкрдпреЛрдЧ рд╕реЗ рдЗрд╕рдХреЗ рдЖрдВрддрд░рд┐рдХ рд╡рд┐рдХрд▓реНрдк рднреА:
рдЗрдХреЛ "int main {рд╡рд╛рдкрд╕реА 0;}" gcc [рд╡рд┐рдХрд▓реНрдк] -xc -v -Q - |
рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рдЕрдХреНрд╕рд░ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
рдмрд┐рдирд╛ рдХрд┐рд╕реА рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡рд╛рд╕реНрддреБ рдЕрдиреБрдХреВрд▓рди рдХреЗ тАЬtest.cтАЭ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░реЗрдЧрд╛ред рдпрд╣ рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЧрд┐рд░рд╛рд╡рдЯ (рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рд╡рд╛рд╕реНрддреБрд╢рд┐рд▓реНрдк рд░реВрдк рд╕реЗ рдЕрдиреБрдХреВрд▓рд┐рдд рдХреЛрдб) рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЬрдм рддрдХ рдЖрдк рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдпрд╛ рдЧрд▓рдд рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рддрдм рддрдХ рдЕрдХреНрд╖рдо рдпрд╛ рд╕реАрдорд┐рдд рд╡реИрд╢реНрд╡реАрдХрд░рдг рдФрд░ рдЙрдк-рдХреЛрдб рдпреЛрдЬрдирд╛ рдкреНрд░рджрд░реНрд╢рди рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рдЧрд┐рд░рд╛рд╡рдЯ рдХреЗ рд╕рдмрд╕реЗ рд╕рд╛рдорд╛рдиреНрдп рдХрд╛рд░рдг рд╣реИрдВред
рд╡рд░реНрддрдорд╛рди рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЗрд╕ рддрд░рд╣ рд╕рдВрдХрд▓рди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
gcc -O2 test.cmarch = рджреЗрд╢реА |
рдЙрдкрдпреЛрдЧ рдХреА рдЧрдИ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред рдПрдХрдорд╛рддреНрд░ рдЕрдкрд╡рд╛рдж рдЙрди рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛рд░реНрдпреЛрдВ рдХреА рдХреЙрд▓ рд▓рдЧрднрдЧ рд╕рднреА рд▓реЙрдиреНрдЪ рд╕рдордп рд▓реЗрддреА рд╣реИред GLIBC рд░рдирдЯрд╛рдЗрдо рдореЗрдВ рджрд┐рдП рдЧрдП рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдлрдВрдХреНрд╢рди рдЪреБрди рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рдзреНрдпрд╛рди рд░рдЦрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рд╕реНрдереИрддрд┐рдХ рд▓рд┐рдВрдХрд┐рдВрдЧ рдХреЗ рд╕рд╛рде, рдХреБрдЫ GLIBC рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХреЗ рд▓рд┐рдП рд╕рдВрд╕реНрдХрд░рдг рдирд╣реАрдВ рд╣реИрдВред
рдпрд╣реА рд╣реИ, рдЕрдЧрд░ GLIBC рдлрд╝рдВрдХреНрд╢рди рдХреА рдЧрддрд┐ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ, рддреЛ рдбрд╛рдпрдирд╛рдорд┐рдХ рдЕрд╕реЗрдВрдмрд▓реА рдмреЗрд╣рддрд░ рд╣реИред ред
(2) рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, 32-рдмрд┐рдЯ рдореЛрдб рдореЗрдВ x86 рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХрд╛рдВрд╢ GCC рдХрдВрдкрд╛рдЗрд▓рд░ x87 рдлреНрд▓реЛрдЯрд┐рдВрдЧ-рдкреЙрдЗрдВрдЯ рдореЙрдбрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ "-mfpmath = sse" рдХреЗ рдмрд┐рдирд╛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдП рдЧрдП рдереЗред рдпрджрд┐ рдХреЗрд╡рд▓ GCC рд╡рд┐рдиреНрдпрд╛рд╕ рдореЗрдВ "--wf-mfpmath = sse" рд╢рд╛рдорд┐рд▓ рд╣реИ:
рдЬреАрд╕реАрд╕реА -v "рдХреЗ рд╕рд╛рде рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛: [рдкрде] / рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ ... - рд╕рд╛рде- mfpmath = sse ..." |
рдХрдВрдкрд╛рдЗрд▓рд░ рдбрд┐рдлрд╝реЙрд▓реНрдЯ SSE рдореЙрдбрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдЧрд╛ред рдЕрдиреНрдп рд╕рднреА рдорд╛рдорд▓реЛрдВ рдореЗрдВ, 32 рдмрд┐рдЯ рдореЛрдб рдореЗрдВ рдЕрд╕реЗрдВрдмрд▓реА рдореЗрдВ "-mfpmath = sse" рд╡рд┐рдХрд▓реНрдк рдХреЛ рдЬреЛрдбрд╝рдирд╛ рдмреЗрд╣рддрд░ рд╣реИред
рддреЛ, рдЕрдХреНрд╕рд░ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛:
рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЕрдВрдХрдЧрдгрд┐рдд рдХреЗ рд╕рд╛рде рдХреЛрдб рдореЗрдВ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдкреНрд░рджрд░реНрд╢рди рд╣рд╛рдирд┐ рд╣реЛ рд╕рдХрддреА рд╣реИред рдЗрд╕рд▓рд┐рдП, рд╕рд╣реА рд╡рд┐рдХрд▓реНрдк:
gcc -O2 -m32 test.c -mfpmath = sse |
32 рдмрд┐рдЯ рдореЛрдб рдореЗрдВ рд╡рд┐рдХрд▓реНрдк "-mfpmath = sse" рдЬреЛрдбрд╝рдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ! рдПрдХ рдЕрдкрд╡рд╛рдж рд╕рдВрдХрд▓рдХ рд╣реИ, рдЬрд┐рд╕рдХреЗ рд╡рд┐рдиреНрдпрд╛рд╕ рдореЗрдВ "--wf-mfpmath = sse" рд╣реИред
32 рдмрд┐рдЯ рдореЛрдб рдпрд╛ 64 рдмрд┐рдЯ?
32-рдмрд┐рдЯ рдореЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдЖрдорддреМрд░ рдкрд░ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдореЗрдореЛрд░реА рдХреА рдорд╛рддреНрд░рд╛ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рд╕рд╛рде рдХрд╛рдо рдореЗрдВ рддреЗрдЬреА рд▓рд╛рдиреЗ рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк (рдЕрдзрд┐рдХ рдбреЗрдЯрд╛ рдХреИрд╢ рдореЗрдВ рд░рдЦрд╛ рдЧрдпрд╛ рд╣реИ)ред
64-рдмрд┐рдЯ рдореЛрдб рдореЗрдВ (32-рдмрд┐рдЯ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ), рдЙрдкрд▓рдмреНрдз рд╕рд╛рдорд╛рдиреНрдп рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ 6 рд╕реЗ 14 рддрдХ рдмрдврд╝ рдЬрд╛рддреА рд╣реИ, рдПрдХреНрд╕рдПрдордПрдо 8 рд╕реЗ 16 рддрдХ рд░рдЬрд┐рд╕реНрдЯрд░ рд╣реЛрддреА рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╕рднреА 64-рдмрд┐рдЯ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ SSE2 рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП 64-рдмрд┐рдЯ рдореЛрдб рдореЗрдВ "-mfpmath" рд╡рд┐рдХрд▓реНрдк рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред = sse тАЭред
рдорддрдЧрдгрдирд╛ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП 64 рдмрд┐рдЯ рдореЛрдб, рдФрд░ рдореЛрдмрд╛рдЗрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд▓рд┐рдП 32 рдмрд┐рдЯ рдореЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрд╢рдВрд╕рд╛ рдХреА рдЬрд╛рддреА рд╣реИред
рдЕрдзрд┐рдХрддрдо рдкреНрд░рджрд░реНрд╢рди рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ?
рдЕрдзрд┐рдХрддрдо рдкреНрд░рджрд░реНрд╢рди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХрд╛ рдХреЛрдИ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕реЗрдЯ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЬреАрд╕реАрд╕реА рдореЗрдВ рдХрдИ рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдЖрдкрдХреЛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдиреАрдЪреЗ рдЗрдВрдЯреЗрд▓ рдПрдЯрдо рдФрд░ рджреВрд╕рд░реА рдкреАрдврд╝реА рдХреЗ рдЗрдВрдЯреЗрд▓ рдХреЛрд░ i7 рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЗ рд▓рд┐рдП "-O2" рд╡рд┐рдХрд▓реНрдк рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рдЕрдиреБрд╢рдВрд╕рд┐рдд рд╡рд┐рдХрд▓реНрдк рдФрд░ рд╡рд┐рдХрд╛рд╕ рдкреВрд░реНрд╡рд╛рдиреБрдорд╛рди рдХреЗ рд╕рд╛рде рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рд╣реИред рдкреВрд░реНрд╡рд╛рдиреБрдорд╛рди рдЬреАрд╕реАрд╕реА рд╕рдВрд╕реНрдХрд░рдг 4.7 рджреНрд╡рд╛рд░рд╛ рд╕рдВрдХрд▓рд┐рдд рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕реЗрдЯ рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЗ рдЬреНрдпрд╛рдорд┐рддреАрдп рдорд╛рдзреНрдп рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИрдВред рдпрд╣ рднреА рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рд╕рдВрдХрд▓рдХ x86-64 рдЬреЗрдиреЗрд░рд┐рдХ рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
"-O2" рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рдореЛрдмрд╛рдЗрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдкрд░ рдЙрддреНрдкрд╛рджрдХрддрд╛ рдореЗрдВ рд╡реГрджреНрдзрд┐ рдХрд╛ рдкреВрд░реНрд╡рд╛рдиреБрдорд╛рди (рдХреЗрд╡рд▓ 32 рдмрд┐рдЯ рдореЛрдб рдореЗрдВ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдореЛрдмрд╛рдЗрд▓ рд╕реЗрдЧрдореЗрдВрдЯ рдХреЗ рд▓рд┐рдП рдореБрдЦреНрдп рд╣реИ):
-m32 -mfpmath = sse | ~ 5% |
-m32 -mfpmath = sse -Ofast -flto | ~ 36% |
-m32 -mfpmath = sse -Ofast -flto -march = рдореВрд▓ | ~ 40% |
-m32 -mfpmath = sse -Ofast -flto -march = рджреЗрд╢реА -рдлреБрдирд░реЛрд▓-рд▓реВрдкреНрд╕ | ~ 43% |
"-O2" (32 рдмрд┐рдЯ рдореЛрдб рдореЗрдВ) рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рдХрдореНрдкреНрдпреВрдЯреЗрд╢рдирд▓ рдХрд╛рд░реНрдпреЛрдВ рдкрд░ рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рд╡реГрджреНрдзрд┐ рдХреА рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгреА:
-m32 -mfpmath = sse | ~ 4% |
-m32 -mfpmath = sse -Ofast -flto | ~ 21% |
-m32 -mfpmath = sse -Ofast -flto -march = рдореВрд▓ | ~ 25% |
-m32 -mfpmath = sse -Ofast -flto -march = рджреЗрд╢реА -рдлреБрдирд░реЛрд▓-рд▓реВрдкреНрд╕ | ~ 24% |
"-O2" (64 рдмрд┐рдЯ рдореЛрдб рдореЗрдВ) рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рдХрдореНрдкреНрдпреВрдЯреЗрд╢рдирд▓ рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рд╡реГрджреНрдзрд┐ рдХреА рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгреА:
-m64 -рдлрд╛рд╕реНрдЯ -рдлреНрд▓реЛ | ~ 17% |
-рдПрдо ремрек -рдУрдПрдлрд╝рдЯреА -рдлреНрд▓реИрдЯреЛ -рдорд░реНрдЪ = рджреЗрд╢реА | ~ 21% |
-m64 -рдСрдлрд╝реНрдЯреЛ -рдлреНрд▓реИрдЯреЛ -рдорд░реНрдЪ = рджреЗрд╢реА -рдлреБрдирд░реЛрд▓-рд▓реВрдкреНрд╕ | ~ 22% |
тАЬ-O2 -mfpmath = sseтАЭ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЗ рд╕рд╛рде рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП 32-рдмрд┐рдЯ рдореЛрдб рдкрд░ 64-рдмрд┐рдЯ рдореЛрдб рдХрд╛ рд▓рд╛рдн рд▓рдЧрднрдЧ
~ 5% рд╣реИрд▓реЗрдЦ рдХреЗ рд╕рднреА рдбреЗрдЯрд╛ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдорд╛рдирдХ рдорд╛рдирджрдВрдб рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдкреВрд░реНрд╡рд╛рдиреБрдорд╛рди рд╣реИредрдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд▓реЗрдЦ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХрд╛ рд╡рд┐рд╡рд░рдг рд╣реИред рдкреВрд░рд╛ рд╡рд┐рд╡рд░рдг (рдЕрдВрдЧреНрд░реЗрдЬреА рдореЗрдВ):
http://gcc.gnu.org/onbuildocs/gcc-4.7.1/gcc/Optimize-Options.html "
- "-Ofast" рдЬреИрд╕реЗ "-O3 -рдлрд╛рд╕реНрдЯ-рдЧрдгрд┐рдд" рдореЗрдВ рдЙрдЪреНрдЪ рд╕реНрддрд░ рдХреЗ рдЕрдиреБрдХреВрд▓рди рдФрд░ рдЕрдВрдХрдЧрдгрд┐рддреАрдп рдЧрдгрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рдЖрдХреНрд░рд╛рдордХ рдЕрдиреБрдХреВрд▓рди рд╢рд╛рдорд┐рд▓ рд╣реИрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкреБрдирд░реНрдореВрд▓реНрдпрд╛рдВрдХрди)
- "-рдлреНрд▓реИрдЯреЛ" рдЗрдВрдЯрд░рдореЙрдбрд▓ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝реЗрд╢рди
- "-m32" 32 рдмрд┐рдЯ рдореЛрдб
- "-mfpmath = sse" рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЕрдВрдХрдЧрдгрд┐рдд (x87 рдореЛрдб рдореЗрдВ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕реНрдЯреИрдХ рдХреЗ рдмрдЬрд╛рдп) рдореЗрдВ рдПрдХреНрд╕рдПрдордПрдо рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рддрд╛ рд╣реИ
- "-рдлреБрдирд░реЛрд▓-рд▓реВрдкреНрд╕" рд▓реВрдк рддреИрдирд╛рддреА рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рддрд╛ рд╣реИ