Rust-nachtelijke builds hebben de mogelijkheid uitgebreid om compilatie te parallelliseren

De Rust compiler frontend, die taken zoals parsing, typecontrole en analyse van leenprocessen afhandelt, ondersteunt nu parallelle uitvoering, wat de compilatietijd aanzienlijk verkort. Parallelisatie is al beschikbaar in nachtelijke Rust builds en kan worden ingeschakeld met de optie "-Z threads=8". Deze functionaliteit zal naar verwachting in 2024 in de stabiele branch worden opgenomen.

Er wordt al jaren gewerkt aan het verkorten van de compilatietijden in Rust. In de eerste 10 maanden van 2023 daalden de compilatietijden gemiddeld met 13%, nam het piekgeheugenverbruik af met 15% en nam de grootte van de gegenereerde bestanden af ​​met 7%. In deze fase werd de snelheidsverhoging bereikt door optimalisaties aan de compiler zelf. Sindsdien zijn de ontwikkelaars verder gegaan met het verbeteren van de prestaties door compilatiebewerkingen te paralleliseren.

Tot nu toe werd parallelisatie in Rust voornamelijk op procesniveau ondersteund. Zo kan de Cargo-pakketbeheerder meerdere Rustc-processen starten om meerdere pakketten tegelijkertijd te compileren. Parallelisatieondersteuning is ook aanwezig in de backend, die codegeneratiebewerkingen uitvoert. De Rust-backend kan code in blokken genereren, die LLVM vervolgens parallel kan verwerken. Tot nu toe kon de frontend broncode alleen in single-threaded modus verwerken.

Om parallelisatie te ondersteunen, werd de frontend gemigreerd naar de Rayon-bibliotheek en aanzienlijk herwerkt. Zo worden veel onderdelen nu gesynchroniseerd met behulp van mutexen en lees-/schrijfvergrendelingen, en maakt de code gebruik van atomaire typen. Tijdens prestatietests kon de nieuwe parallelliseerbare implementatie compilaties tot 2% langzamer uitvoeren in single-threaded modus (-Z threads=1), maar met meer dan één thread nam de snelheid aanzienlijk toe. Zo verminderde het instellen van 8 threads (-Z threads=8) de compilatietijd in sommige situaties met 50%.

Het resultaat is sterk afhankelijk van de omgevingsinstellingen en de code die wordt gecompileerd. Voor zeer kleine programma's die al snel compileren, kan compilatie in multithreaded modus trager zijn. Bovendien kan het geheugengebruik in multithreaded modus aanzienlijk toenemen; tests hebben bijvoorbeeld een toename in geheugengebruik tot 35% waargenomen.

Bron: opennet.ru

Koop betrouwbare hosting voor sites met DDoS-bescherming, VPS VDS-servers 🔥 Koop betrouwbare websitehosting met DDoS-bescherming, VPS- en VDS-servers | ProHoster