GCC рдордзреНрдпреЗ рд╕рдВрдХрд▓рди рдкреНрд░рдХреНрд░рд┐рдпреЗрдЪреНрдпрд╛ рд╕рдорд╛рдВрддрд░реАрдХрд░рдгрд╛рд╕рд╛рдареА рд╕рдорд░реНрдерди рдЬреЛрдбрдгреНрдпрд╛рд╕рд╛рдареА рдкреНрд░рдХрд▓реНрдк

рд╕рдВрд╢реЛрдзрди рдкреНрд░рдХрд▓реНрдкрд╛рдЪрд╛ рднрд╛рдЧ рдореНрд╣рдгреВрди рд╕рдорд╛рдВрддрд░ GCC GCC рдордзреНтАНрдпреЗ рдПрдХ рд╡реИрд╢рд┐рд╖реНтАНрдЯреНрдп рдЬреЛрдбрдгреНтАНрдпрд╛рдЪреЗ рдХрд╛рдо рд╕реБрд░реВ рдЭрд╛рд▓реЗ рдЖрд╣реЗ рдЬреЗ рд╕рдВрдХрд▓рд┐рдд рдкреНрд░рдХреНрд░рд┐рдпреЗрд▓рд╛ рдЕрдиреЗрдХ рд╕рдорд╛рдВрддрд░ рдереНрд░реЗрдбрдордзреНтАНрдпреЗ рд╡рд┐рднрд╛рдЧрдгреНтАНрдпрд╛рдЪреА рдЕрдиреБрдорддреА рджреЗрддреЗ. рд╕рдзреНрдпрд╛, рдорд▓реНрдЯреА-рдХреЛрд░ рд╕рд┐рд╕реНрдЯрдореНрд╕рд╡рд░ рдмрд┐рд▓реНрдб рд╕реНрдкреАрдб рд╡рд╛рдврд╡рдгреНрдпрд╛рд╕рд╛рдареА, рдореЗрдХ рдпреБрдЯрд┐рд▓рд┐рдЯреА рд╡реЗрдЧрд│реНрдпрд╛ рдХрдВрдкрд╛рдЗрд▓рд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдВрдЪрд╛ рд╡рд╛рдкрд░ рдХрд░рддреЗ, рдЬреНрдпрд╛рдкреИрдХреА рдкреНрд░рддреНрдпреЗрдХ рд╕реНрд╡рддрдВрддреНрд░ рдХреЛрдб рдлрд╛рдЗрд▓ рддрдпрд╛рд░ рдХрд░рддреЗ. рдирд╡реАрди рдкреНрд░рдХрд▓реНрдк рдХрдВрдкрд╛рдЗрд▓рд░ рд╕реНрддрд░рд╛рд╡рд░ рд╕рдорд╛рдВрддрд░реАрдХрд░рдг рдкреНрд░рджрд╛рди рдХрд░рдгреНрдпрд╛рдЪрд╛ рдкреНрд░рдпреЛрдЧ рдХрд░рдд рдЖрд╣реЗ, рдЬреНрдпрд╛рдореБрд│реЗ рдмрд╣реБ-рдХреЛрд░ рд╕рд┐рд╕реНрдЯреАрдорд╡рд░ рдХрд╛рд░реНрдпрдХреНрд╖рдорддреЗрдд рд╕реБрдзрд╛рд░рдгрд╛ рд╣реЛрдИрд▓.

рдЪрд╛рдЪрдгреАрд╕рд╛рдареА рддрдпрд╛рд░ GCC рдЪреА рдПрдХ рд╡реЗрдЧрд│реА рд╕рдорд╛рдВрддрд░ рд╢рд╛рдЦрд╛, рдЬреА рдереНрд░реЗрдбреНрд╕рдЪреА рд╕рдВрдЦреНрдпрд╛ рд╕реЗрдЯ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдирд╡реАрди рдкреЕрд░рд╛рдореАрдЯрд░ тАЬтАФparam=num-threads=NтАЭ рдСрдлрд░ рдХрд░рддреЗ. рд╕реБрд░реБрд╡рд╛рддреАрдЪреНрдпрд╛ рдЯрдкреНрдкреНрдпрд╛рд╡рд░, рдЖрдореНрд╣реА рдЖрдВрддрд░рдкреНрд░рдХреНрд░рд┐рдпрд╛рддреНрдордХ рдСрдкреНрдЯрд┐рдорд╛рдпрдЭреЗрд╢рдирдЪреЗ рд╣рд╕реНрддрд╛рдВрддрд░рдг рд╕реНрд╡рддрдВрддреНрд░ рдереНрд░реЗрдбрдордзреНрдпреЗ рд▓рд╛рдЧреВ рдХреЗрд▓реЗ, рдЬреНрдпрд╛рд▓рд╛ рдкреНрд░рддреНрдпреЗрдХ рдлрдВрдХреНрд╢рдирд╕рд╛рдареА рдЪрдХреНрд░реАрдп рдореНрд╣рдЯрд▓реЗ рдЬрд╛рддреЗ рдЖрдгрд┐ рд╕рд╣рдЬрдкрдгреЗ рд╕рдорд╛рдВрддрд░ рдХреЗрд▓реЗ рдЬрд╛рдК рд╢рдХрддреЗ. рд╣рд╛рд░реНрдбрд╡реЗрдЕрд░-рд╕реНрд╡рддрдВрддреНрд░ рдСрдкреНрдЯрд┐рдорд╛рдпрдЭреЗрд╢рдирд╕рд╛рдареА рдЬрдмрд╛рдмрджрд╛рд░ GIMPLE рдСрдкрд░реЗрд╢рдиреНрд╕ рдЬреЗ рдПрдХрдореЗрдХрд╛рдВрд╢реА рдлрдВрдХреНрд╢рдиреНрд╕рдЪреНрдпрд╛ рдкрд░рд╕реНрдкрд░рд╕рдВрд╡рд╛рджрд╛рдЪреЗ рдореВрд▓реНрдпрдорд╛рдкрди рдХрд░рддрд╛рдд рддреЗ рд╕реНрд╡рддрдВрддреНрд░ рдереНрд░реЗрдбрдордзреНрдпреЗ рдареЗрд╡рд▓реЗрд▓реЗ рдЖрд╣реЗрдд.

рдкреБрдвреАрд▓ рдЯрдкреНрдкреНрдпрд╛рд╡рд░, рд╣рд╛рд░реНрдбрд╡реЗрдЕрд░ рдкреНрд▓реЕрдЯрдлреЙрд░реНрдордЪреА рд╡реИрд╢рд┐рд╖реНрдЯреНрдпреЗ рд╡рд┐рдЪрд╛рд░рд╛рдд рдШреЗрдКрди, рдЖрдВрддрд░рдкреНрд░рдХреНрд░рд┐рдпрд╛рддреНрдордХ RTL рдСрдкреНрдЯрд┐рдорд╛рдпрдЭреЗрд╢рди рд╡реЗрдЧрд│реНрдпрд╛ рдереНрд░реЗрдбрдордзреНрдпреЗ рд╣рд▓рд╡рд┐рдгреНрдпрд╛рдЪреЗ рджреЗрдЦреАрд▓ рдирд┐рдпреЛрдЬрд┐рдд рдЖрд╣реЗ. рддреНрдпрд╛рдирдВрддрд░, рдЖрдореНрд╣реА рдХреЙрд▓рдЪреНрдпрд╛ рддрдкрд╢реАрд▓рд╛рдХрдбреЗ рджреБрд░реНрд▓рдХреНрд╖ рдХрд░реВрди, рдлрдВрдХреНрд╢рдирдордзреАрд▓ рдХреЛрдбрд╡рд░ рд▓рд╛рдЧреВ рдХреЗрд▓реЗрд▓реНрдпрд╛ рдЗрдВрдЯреНрд░рд╛рдкреНрд░реЛрд╕реЗрдбреНрдпреБрд░рд▓ рдСрдкреНрдЯрд┐рдорд╛рдпрдЭреЗрд╢рди (IPA) рдЪреЗ рд╕рдорд╛рдВрддрд░реАрдХрд░рдг рд▓рд╛рдЧреВ рдХрд░рдгреНрдпрд╛рдЪреА рдпреЛрдЬрдирд╛ рдЖрдЦрдд рдЖрд╣реЛрдд. рдЖрддреНрддрд╛рд╕рд╛рдареА рдорд░реНрдпрд╛рджрд┐рдд рджреБрд╡рд╛ рдореНрд╣рдгрдЬреЗ рдХрдЪрд░рд╛ рд╕рдВрдХрд▓рдХ, рдЬреНрдпрд╛рдиреЗ рдПрдХ рдЬрд╛рдЧрддрд┐рдХ рд▓реЙрдХ рдЬреЛрдбрд▓рд╛ рдЖрд╣реЗ рдЬреЛ рдорд▓реНрдЯрд┐-рдереНрд░реЗрдбреЗрдб рдореЛрдбрдордзреНрдпреЗ рдЪрд╛рд▓рдд рдЕрд╕рддрд╛рдирд╛ рдХрдЪрд░рд╛ рд╕рдВрдХрд▓рди рдСрдкрд░реЗрд╢рдиреНрд╕ рдЕрдХреНрд╖рдо рдХрд░рддреЛ (рднрд╡рд┐рд╖реНрдпрд╛рдд рдХрдЪрд░рд╛ рдЧреЛрд│рд╛ рдХрд░рдгрд╛рд░рд╛ GCC рдЪреНрдпрд╛ рдорд▓реНрдЯреА-рдереНрд░реЗрдбреЗрдб рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреАрд╕рд╛рдареА рдЕрдиреБрдХреВрд▓ рдХреЗрд▓рд╛ рдЬрд╛рдИрд▓).

рдХрд╛рд░реНрдпрдкреНрд░рджрд░реНрд╢рдирд╛рддреАрд▓ рдмрджрд▓рд╛рдВрдЪреЗ рдореВрд▓реНрдпрдорд╛рдкрди рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рдПрдХ рдЪрд╛рдЪрдгреА рд╕рдВрдЪ рддрдпрд╛рд░ рдХреЗрд▓рд╛ рдЧреЗрд▓рд╛ рдЖрд╣реЗ рдЬреЛ gimple-match.c рдлрд╛рдЗрд▓ рдПрдХрддреНрд░ рдХрд░рддреЛ, рдЬреНрдпрд╛рдордзреНрдпреЗ 100 рд╣рдЬрд╛рд░ рдкреЗрдХреНрд╖рд╛ рдЬрд╛рд╕реНрдд рдХреЛрдб рдЖрдгрд┐ 1700 рдлрдВрдХреНрд╢рдиреНрд╕ рд╕рдорд╛рд╡рд┐рд╖реНрдЯ рдЖрд╣реЗрдд. рдЗрдВрдЯреЗрд▓ рдХреЛрд░ i5-8250U CPU рд╕рд╣ 4 рдлрд┐рдЬрд┐рдХрд▓ рдХреЛрд░ рдЖрдгрд┐ 8 рд╡реНрд╣рд░реНрдЪреНрдпреБрдЕрд▓ (рд╣рд╛рдпрдкрд░рдереНрд░реЗрдбрд┐рдВрдЧ) рдЕрд╕рд▓реЗрд▓реНрдпрд╛ рд╕рд┐рд╕реНрдЯреАрдорд╡рд░реАрд▓ рдЪрд╛рдЪрдгреНрдпрд╛рдВрдордзреНрдпреЗ 7 рдереНрд░реЗрдб рдЪрд╛рд▓рд╡рддрд╛рдирд╛ 4 рддреЗ 2 рд╕реЗрдХрдВрджрд╛рдВрдкрд░реНрдпрдВрдд рдЖрдгрд┐ 3 рдЪрд╛рд▓рд╡рддрд╛рдирд╛ 4 рд╕реЗрдХрдВрджрд╛рдВрдкрд░реНрдпрдВрдд рдЗрдВрдЯреНрд░рд╛ рдкреНрд░реЛрд╕рд┐рдЬрд░рд▓ GIMPLE рдСрдкреНрдЯрд┐рдорд╛рдпрдЭреЗрд╢рдирдЪреНрдпрд╛ рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреАрдЪреНрдпрд╛ рд╡реЗрд│реЗрдд рдШрдЯ рджрд┐рд╕реВрди рдЖрд▓реА. рдзрд╛рдЧреЗ, рдореНрд╣рдгрдЬреЗ рд╡рд┐рдЪрд╛рд░рд╛рдзреАрди рдЕрд╕реЗрдВрдмрд▓реА рд╕реНрдЯреЗрдЬрдЪреНрдпрд╛ рдЧрддреАрдордзреНрдпреЗ рдЕрдиреБрдХреНрд░рдореЗ 1.72 рдЖрдгрд┐ 2.52 рдкрдЯ рд╡рд╛рдв рдЭрд╛рд▓реА. рд╣рд╛рдпрдкрд░рдереНрд░реЗрдбрд┐рдВрдЧрд╕рд╣ рд╡реНрд╣рд░реНрдЪреНрдпреБрдЕрд▓ рдХреЛрд░ рд╡рд╛рдкрд░рд▓реНрдпрд╛рдиреЗ рдХрд╛рд░реНрдпрдХреНрд╖рдорддреЗрдд рд╡рд╛рдв рд╣реЛрдд рдирд╛рд╣реА рд╣реЗ рджреЗрдЦреАрд▓ рдЪрд╛рдЪрдгреНрдпрд╛рдВрдиреА рджрд░реНрд╢рд╡рд┐рд▓реЗ рдЖрд╣реЗ.

GCC рдордзреНрдпреЗ рд╕рдВрдХрд▓рди рдкреНрд░рдХреНрд░рд┐рдпреЗрдЪреНрдпрд╛ рд╕рдорд╛рдВрддрд░реАрдХрд░рдгрд╛рд╕рд╛рдареА рд╕рдорд░реНрдерди рдЬреЛрдбрдгреНрдпрд╛рд╕рд╛рдареА рдкреНрд░рдХрд▓реНрдк

рдПрдХреВрдг рдмрд┐рд▓реНрдб рдЯрд╛рдЗрдо рдЕрдВрджрд╛рдЬреЗ 10% рдиреЗ рдХрдореА рдХрд░рдгреНрдпрд╛рдд рдЖрд▓рд╛, рдкрд░рдВрддреБ рдЕрдВрджрд╛рдЬрд╛рдиреБрд╕рд╛рд░, рд╕рдорд╛рдВрддрд░ RTL рдСрдкреНрдЯрд┐рдорд╛рдпрдЭреЗрд╢рди рдЕрдзрд┐рдХ рдореВрд░реНрдд рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рдгреНрдпрд╛рд╕ рдЕрдиреБрдорддреА рджреЗрдИрд▓, рдХрд╛рд░рдг рд╕рдВрдХрд▓рдирд╛рджрд░рдореНрдпрд╛рди рдпрд╛ рд╕реНрдЯреЗрдЬрд▓рд╛ рдЕрдзрд┐рдХ рд╡реЗрд│ рд▓рд╛рдЧрддреЛ. рдЕрдВрджрд╛рдЬреЗ RTL рд╕рдорд╛рдВрддрд░реАрдХрд░рдгрд╛рдирдВрддрд░, рдПрдХреВрдг рдЕрд╕реЗрдВрдмреНрд▓реА рд╡реЗрд│ 1.61 рдкрдЯ рдХрдореА рд╣реЛрдИрд▓. рдпрд╛рдирдВрддрд░, IPA рдСрдкреНрдЯрд┐рдорд╛рдпрдЭреЗрд╢рди рд╕рдорд╛рдВрддрд░ рдХрд░реВрди рдмрд┐рд▓реНрдб рдЯрд╛рдЗрдо рдЖрдгрдЦреА 5-10% рдХрдореА рдХрд░рдгреЗ рд╢рдХреНрдп рд╣реЛрдИрд▓.

GCC рдордзреНрдпреЗ рд╕рдВрдХрд▓рди рдкреНрд░рдХреНрд░рд┐рдпреЗрдЪреНрдпрд╛ рд╕рдорд╛рдВрддрд░реАрдХрд░рдгрд╛рд╕рд╛рдареА рд╕рдорд░реНрдерди рдЬреЛрдбрдгреНрдпрд╛рд╕рд╛рдареА рдкреНрд░рдХрд▓реНрдк

рд╕реНрддреНрд░реЛрдд: opennet.ru

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╛