Sehemu ya mbele ya mkusanyaji wa Rust, ambayo hufanya kazi kama vile kuchanganua, kukagua aina, na uchanganuzi wa kukopa, inasaidia utekelezaji sambamba, ambao unaweza kupunguza kwa kiasi kikubwa muda wa ukusanyaji. Usawazishaji tayari unapatikana katika miundo ya kila usiku ya Rust na umewezeshwa kwa kutumia chaguo la "-Z nyuzi=8". Fursa inayozingatiwa imepangwa kujumuishwa katika tawi thabiti mnamo 2024.
Kazi ya kupunguza nyakati za mkusanyiko katika Rust imekuwa ikiendelea kwa miaka kadhaa. Katika miezi 10 ya kwanza ya 2023, nyakati za ujumuishaji zilipunguzwa kwa wastani wa 13%, matumizi ya kumbukumbu ya kilele yalipunguzwa kwa 15%, na saizi ya faili zinazozalishwa ilipunguzwa kwa 7%. Katika hatua hii, kuongeza kasi ilipatikana kupitia uboreshaji wa mkusanyaji yenyewe. Baada ya hayo, watengenezaji waliendelea na kazi ya kuongeza kasi kwa kusawazisha shughuli wakati wa kukusanya.
Hadi sasa, usawazishaji katika Rust umefanywa zaidi katika kiwango cha mchakato; kwa mfano, msimamizi wa kifurushi cha Cargo anaweza kuzindua michakato mingi ya rustc kuunda vifurushi vingi kwa wakati mmoja. Usaidizi wa kusawazisha pia upo kwa upande wa mazingira ya nyuma, ambayo hufanya shughuli zinazohusiana na utengenezaji wa msimbo - Rust backend inaweza kutoa msimbo katika sehemu, ambazo LLVM inaweza kuchakata kwa sambamba. Sehemu ya mbele, hadi sasa, inaweza tu kuchakata msimbo wa chanzo katika hali ya uzi mmoja.
Ili kusaidia usambamba, sehemu ya mbele imebadilishwa kwa kutumia maktaba ya Rayon na imeundwa upya kwa kiasi kikubwa, kwa mfano, sehemu zake nyingi sasa zimesawazishwa kwa kutumia vibubu na kufuli za kusoma/kuandika, na msimbo hutumia aina za atomiki. Katika majaribio ya utendakazi, utekelezaji mpya unaoweza kusawazishwa unaweza kujumuisha hadi 2% polepole wakati unaendeshwa katika hali ya uzi mmoja (-Z nyuzi=1), lakini kulipokuwa na zaidi ya nyuzi moja, kasi iliongezeka sana. Kwa mfano, wakati wa kusakinisha nyuzi 8 (-Z threads=8), katika hali fulani muda wa mkusanyiko unaweza kupunguzwa kwa 50%.
Katika kesi hii, matokeo inategemea sana mipangilio ya mazingira na nambari iliyokusanywa - kwa programu ndogo sana ambazo tayari zinajumuisha haraka, mkusanyiko katika hali ya nyuzi nyingi inaweza kuwa polepole. Kwa kuongezea, utumiaji wa kumbukumbu katika hali ya nyuzi nyingi inaweza kuongezeka kwa kiasi kikubwa; kwa mfano, katika vipimo, ongezeko la utumiaji wa kumbukumbu hadi 35% lilizingatiwa.
Chanzo: opennet.ru
