Kao dio istraživačkog projekta
Za testiranje
U sljedećoj fazi planirano je i premještanje interproceduralnih RTL optimizacija u zasebne niti, uzimajući u obzir posebnosti hardverske platforme. Nakon toga se planira implementacija paralelizacije intraproceduralnih optimizacija (IPA) primijenjenih na kod unutar funkcije, bez obzira na karakteristike poziva. Dosadašnja ograničavajuća karika je sakupljač smeća, koji ima globalno zaključavanje koje onemogućuje operacije sakupljanja smeća dok radi u višenitnom modu (u budućnosti će sakupljač smeća biti prilagođen za GCC višenitno).
Da bi se procenila promena performansi, pripremljen je test paket koji gradi datoteku gimple-match.c, koja uključuje više od 100 hiljada linija koda i 1700 funkcija. Testovi na sistemu sa Intel Core i5-8250U CPU-om sa 4 fizička jezgra i 8 virtuelnih jezgara (Hyperthreading) pokazali su smanjenje vremena izvršavanja Intra Procedural GIMPLE optimizacije sa 7 na 4 sekunde pri pokretanju 2 niti i do 3 sekunde kada počevši od 4 niti, tj. postignuto je povećanje brzine razmatrane faze montaže za 1.72 i 2.52 puta. Testovi su takođe pokazali da korišćenje virtuelnih jezgara sa Hyperthreadingom ne dovodi do povećanja performansi.
Ukupno vrijeme izgradnje je smanjeno za oko 10%, ali se predviđa da će paralelizacija RTL optimizacija postići opipljivije rezultate, jer je za kompajliranje ove faze potrebno znatno duže. Otprilike nakon RTL paralelizacije, ukupno vrijeme sklapanja će se smanjiti za 1.61 puta. Nakon toga će biti moguće smanjiti vrijeme izgradnje za još 5-10% zbog paralelizacije IPA optimizacija.
izvor: opennet.ru