У рамках даследчага праекта
Для тэсціравання
На наступным этапе ў асобныя патокі таксама плануецца вынесці міжпрацэдурныя RTL-аптымізацыі, якія ўлічваюць асаблівасці апаратнай платформы. Пасля гэтага плануецца рэалізаваць распаралельванне ўнутрыпрацэдурных аптымізацый (IPA), якія прымяняюцца да кода ўнутры функцыі, незалежна ад асаблівасцяў выкліку. Абмяжоўвалым звяном пакуль з'яўляецца зборшчык смецця, у які дададзена глабальная блакіроўка, якая адключае аперацыі зборкі смецця падчас працы ў шматструменным рэжыме (у будучыні зборшчык смецця будзе адаптаваны для шматструменнага выканання GCC).
Для ацэнкі змены прадукцыйнасці падрыхтаваны тэставы набор, які ажыццяўляе зборку файла gimple-match.c, які ўключае больш за 100 тысяч радкоў кода і 1700 функцый. Тэсты на сістэме з CPU Intel Core i5-8250U з 4 фізічнымі ядрамі і 8 віртуальнымі (Hyperthreading) паказалі зніжэнне часу выканання аптымізацый Intra Procedural GIMPLE з 7 да 4 секунд пры запуску 2 патокаў і да 3 секунд пры запуску 4 патокаў, г.зн. дасягнута павелічэнне хуткасці разгляданага этапа зборкі ў 1.72 і 2.52 разы адпаведна. Тэсты таксама паказалі, што выкарыстанне віртуальных ядраў пры Hyperthreading не прыводзіць да росту прадукцыйнасці.
Агульны час зборкі скарацілася прыблізна на 10%, але па прагнозах распаралельванне RTL-аптымізацый дазволіць дамагчыся больш адчувальных вынікаў, бо дадзеная стадыя займае пры кампіляцыі істотна больш часу. Арыентыровачна пасля распаралельвання RTL агульны час зборкі скароціцца ў 1.61 разу. Пасля гэтага яшчэ на 5-10% можна будзе скараціць час зборкі за кошт распаралельвання аптымізацый IPA.
Крыніца: opennet.ru