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

рдЕрдиреБрд╕рдиреНрдзрд╛рди рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рдПрдХ рднрд╛рдЧ рдХреЛ рд░реВрдк рдорд╛ рд╕рдорд╛рдирд╛рдиреНрддрд░ GCC GCC рдорд╛ рдПрдЙрдЯрд╛ рд╕реБрд╡рд┐рдзрд╛ рдердкреНрди рдХрд╛рдо рд╕реБрд░реБ рднрдПрдХреЛ рдЫ рдЬрд╕рд▓реЗ рд╕рдВрдХрд▓рди рдкреНрд░рдХреНрд░рд┐рдпрд╛рд▓рд╛рдИ рдзреЗрд░реИ рд╕рдорд╛рдирд╛рдиреНрддрд░ рдереНрд░реЗрдбрд╣рд░реВрдорд╛ рд╡рд┐рднрд╛рдЬрди рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫред рд╣рд╛рд▓, рдмрд╣реБ-рдХреЛрд░ рдкреНрд░рдгрд╛рд▓реАрд╣рд░реВрдорд╛ рдирд┐рд░реНрдорд╛рдг рдЧрддрд┐ рд╕реБрдзрд╛рд░ рдЧрд░реНрди, рдореЗрдХ рдЙрдкрдпреЛрдЧрд┐рддрд╛рд▓реЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдХрдореНрдкрд╛рдЗрд▓рд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛рд╣рд░реВрдХреЛ рд╕реБрд░реБрд╡рд╛рдд рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджрдЫ, рдЬрд╕рдордзреНрдпреЗ рдкреНрд░рддреНрдпреЗрдХрд▓реЗ рдЫреБрдЯреНрдЯреИ рдХреЛрдб рдлрд╛рдЗрд▓ рдмрдирд╛рдЙрдБрдЫред рдирдпрд╛рдБ рдкрд░рд┐рдпреЛрдЬрдирд╛рд▓реЗ рдХрдореНрдкрд╛рдЗрд▓рд░ рд╕реНрддрд░рдорд╛ рд╕рдорд╛рдирд╛рдиреНрддрд░ рдкреНрд░рджрд╛рди рдЧрд░реНрди рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рд░рд╣реЗрдХреЛ рдЫ, рдЬрд╕рд▓реЗ рдмрд╣реБ-рдХреЛрд░ рдкреНрд░рдгрд╛рд▓реАрд╣рд░реВрдорд╛ рд╕рдореНрднрд╛рд╡рд┐рдд рд░реВрдкрдорд╛ рдкреНрд░рджрд░реНрд╢рди рд╕реБрдзрд╛рд░ рдЧрд░реНрдиреЗрдЫред

рдкрд░реАрдХреНрд╖рдгрдХреЛ рд▓рд╛рдЧрд┐ рддрдпрд╛рд░ GCC рдХреЛ рдПрдХ рдЕрд▓рдЧ рд╕рдорд╛рдирд╛рдиреНрддрд░ рд╢рд╛рдЦрд╛, рдЬрд╕рд▓реЗ рдереНрд░реЗрдбрд╣рд░реВрдХреЛ рд╕рдВрдЦреНрдпрд╛ рд╕реЗрдЯ рдЧрд░реНрди рдирдпрд╛рдБ рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░ "тАФparam=num-threads=N" рдкреНрд░рджрд╛рди рдЧрд░реНрджрдЫред рдкреНрд░рд╛рд░рдореНрднрд┐рдХ рдЪрд░рдгрдорд╛, рд╣рд╛рдореАрд▓реЗ рдЕрдиреНрддрд░рдкреНрд░рдХреНрд░рд┐рдпрд╛рддреНрдордХ рдЕрдиреБрдХреВрд▓рдирд╣рд░реВрдХреЛ рд╕реНрдерд╛рдирд╛рдиреНрддрд░рдгрд▓рд╛рдИ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдереНрд░реЗрдбрд╣рд░реВрдорд╛ рд▓рд╛рдЧреВ рдЧрд░реНрдпреМрдВ, рдЬрд╕рд▓рд╛рдИ рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рдХрд╛рд░реНрдпрдХреЛ рд▓рд╛рдЧрд┐ рдЪрдХреНрд░реАрдп рд░реВрдкрдорд╛ рднрдирд┐рдиреНрдЫ рд░ рд╕рдЬрд┐рд▓реИрд╕рдБрдЧ рд╕рдорд╛рдирд╛рдиреНрддрд░ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫред рд╣рд╛рд░реНрдбрд╡реЗрдпрд░-рд╕реНрд╡рддрдиреНрддреНрд░ рдЕрдкреНрдЯрд┐рдорд╛рдЗрдЬреЗрд╕рдирд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдЬрд┐рдореНрдореЗрд╡рд╛рд░ GIMPLE рд╕рдЮреНрдЪрд╛рд▓рдирд╣рд░реВ рдЬрд╕рд▓реЗ рдПрдХрдЕрд░реНрдХрд╛рд╕рдБрдЧ рдХрд╛рд░реНрдпрд╣рд░реВрдХреЛ рдЕрдиреНрддрд░рдХреНрд░рд┐рдпрд╛рдХреЛ рдореВрд▓реНрдпрд╛рдЩреНрдХрди рдЧрд░реНрджрдЫ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдереНрд░реЗрдбрд╣рд░реВрдорд╛ рд░рд╛рдЦрд┐рдПрдХреЛ рдЫред

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

рдХрд╛рд░реНрдпрд╕рдореНрдкрд╛рджрдирдорд╛ рднрдПрдХрд╛ рдкрд░рд┐рд╡рд░реНрддрдирд╣рд░реВрдХреЛ рдореВрд▓реНрдпрд╛рдЩреНрдХрди рдЧрд░реНрди, gimple-match.c рдлрд╛рдЗрд▓рд▓рд╛рдИ рдПрд╕реЗрдореНрдмрд▓ рдЧрд░реНрдиреЗ рдПрдЙрдЯрд╛ рдкрд░реАрдХреНрд╖рдг рд╕реБрдЗрдЯ рддрдпрд╛рд░ рдЧрд░рд┐рдПрдХреЛ рдЫ, рдЬрд╕рдорд╛ 100 рд╣рдЬрд╛рд░ рднрдиреНрджрд╛ рдмрдвреА рдХреЛрдб рд░ 1700 рдкреНрд░рдХрд╛рд░реНрдпрд╣рд░реВ рд╕рдорд╛рд╡реЗрд╢ рдЫрдиреНред 5 рднреМрддрд┐рдХ рдХреЛрд░ рд░ 8250 рднрд░реНрдЪреБрдЕрд▓ (рд╣рд╛рдЗрдкрд░рдереНрд░реЗрдбрд┐рдЩ) рднрдПрдХреЛ Intel Core i4-8U CPU рднрдПрдХреЛ рдкреНрд░рдгрд╛рд▓реАрдорд╛ рдкрд░реАрдХреНрд╖рдгрд╣рд░реВрд▓реЗ 7 рдереНрд░реЗрдбрд╣рд░реВ рдЪрд▓рд╛рдЙрдБрджрд╛ 4 рджреЗрдЦрд┐ 2 рд╕реЗрдХреЗрдиреНрдбрдорд╛ рд░ 3 рдЪрд▓рд╛рдЙрдБрджрд╛ 4 рд╕реЗрдХреЗрдиреНрдбрдорд╛ Intra Procedural GIMPLE рдЕрдкреНрдЯрд┐рдорд╛рдЗрдЬреЗрд╕рдирдХреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕рдордп рдШрдЯреЗрдХреЛ рджреЗрдЦрд╛рдПрдХреЛ рдЫред рдереНрд░реЗрдбрд╣рд░реВ, рдЕрд░реНрдерд╛рддреН рд╡рд┐рдЪрд╛рд░рд╛рдзреАрди рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдЪрд░рдгрдХреЛ рдЧрддрд┐рдорд╛ рдХреНрд░рдорд╢рдГ 1.72 рд░ 2.52 рдЧреБрдгрд╛рд▓реЗ рд╡реГрджреНрдзрд┐ рднрдПрдХреЛ рдерд┐рдпреЛред рдкрд░реАрдХреНрд╖рдгрд╣рд░реВрд▓реЗ рдкрдирд┐ рд╣рд╛рдЗрдкрд░рдереНрд░реЗрдбрд┐рдЩрдХреЛ рд╕рд╛рде рднрд░реНрдЪреБрдЕрд▓ рдХреЛрд░ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджрд╛ рдХрд╛рд░реНрдпрд╕рдореНрдкрд╛рджрдирдорд╛ рд╡реГрджреНрдзрд┐ рдирд╣реБрдиреЗ рджреЗрдЦрд╛рдПрдХреЛ рдЫред

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

рд╕рдордЧреНрд░ рдирд┐рд░реНрдорд╛рдг рд╕рдордп рд▓рдЧрднрдЧ 10% рд▓реЗ рдШрдЯрд╛рдЗрдПрдХреЛ рдерд┐рдпреЛ, рддрд░ рдкреВрд░реНрд╡рд╛рдиреБрдорд╛рди рдЕрдиреБрд╕рд╛рд░, рд╕рдорд╛рдирд╛рдиреНрддрд░ RTL рдЕрдиреБрдХреВрд▓рдирд▓реЗ рдердк рдареЛрд╕ рдкрд░рд┐рдгрд╛рдорд╣рд░реВ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреЗрдЫ, рдХрд┐рдирдХрд┐ рдпрд╕ рдЪрд░рдгрд▓реЗ рд╕рдВрдХрд▓рдирдХреЛ рдХреНрд░рдордорд╛ рдзреЗрд░реИ рд╕рдордп рд▓рд┐рдиреНрдЫред рд▓рдЧрднрдЧ RTL рд╕рдорд╛рдирд╛рдиреНрддрд░ рдкрдЫрд┐, рдХреБрд▓ рд╡рд┐рдзрд╛рдирд╕рднрд╛ рд╕рдордп 1.61 рдкрдЯрдХ рдШрдЯрд╛рдЗрдиреЗрдЫред рдпрд╕ рдкрдЫрд┐, IPA рдЕрдиреБрдХреВрд▓рдирд╣рд░реВ рд╕рдорд╛рдирд╛рдиреНрддрд░ рдЧрд░реЗрд░ рдирд┐рд░реНрдорд╛рдг рд╕рдордпрд▓рд╛рдИ рдЕрд░реНрдХреЛ 5-10% рдХрдо рдЧрд░реНрди рд╕рдореНрднрд╡ рд╣реБрдиреЗрдЫред

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

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

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдердкреНрди