Dans les versions nocturnes de Rust, les capacités de parallélisation de la compilation ont été étendues.

Dans le front-end du compilateur Rust, qui accomplit des tĂąches telles que l'analyse syntaxique, la vĂ©rification des types et l'analyse des emprunts, un support pour l'exĂ©cution parallĂšle a Ă©tĂ© mis en Ɠuvre, permettant de rĂ©duire considĂ©rablement le temps de compilation. Le parallĂ©lisme est dĂ©jĂ  disponible dans les versions nocturnes de Rust et peut ĂȘtre activĂ© Ă  l'aide de l'option « -Z threads=8 ». Cette fonctionnalitĂ© est prĂ©vue pour ĂȘtre incluse dans la branche stable en 2024.

Le travail sur la rĂ©duction du temps de compilation dans Rust est en cours depuis plusieurs annĂ©es. Au cours des dix premiers mois de 2023, le temps de compilation a Ă©tĂ© rĂ©duit en moyenne de 13 %, la consommation de mĂ©moire a diminuĂ© de 15 % et la taille des fichiers gĂ©nĂ©rĂ©s a Ă©tĂ© rĂ©duite de 7 %. À ce stade, l'accĂ©lĂ©ration a Ă©tĂ© obtenue grĂące Ă  des optimisations du compilateur lui-mĂȘme. Ensuite, les dĂ©veloppeurs se sont concentrĂ©s sur l'accĂ©lĂ©ration par le biais du parallĂ©lisme lors des opĂ©rations de compilation.

Jusqu'Ă  prĂ©sent, le parallĂ©lisme dans Rust Ă©tait principalement assurĂ© au niveau des processus, par exemple, le gestionnaire de paquets Cargo peut exĂ©cuter plusieurs processus rustc pour compiler simultanĂ©ment plusieurs paquets. Le support du parallĂ©lisme est Ă©galement prĂ©sent cĂŽtĂ© backend, qui exĂ©cute des opĂ©rations liĂ©es Ă  la gĂ©nĂ©ration de code — le backend Rust peut gĂ©nĂ©rer du code par morceaux, que LLVM peut ensuite traiter en parallĂšle. En revanche, le front-end ne pouvait toujours traiter le code source qu'en mode mono-thread.

Pour prendre en charge le parallĂ©lisme, le front-end a Ă©tĂ© modifiĂ© pour utiliser la bibliothĂšque Rayon et a Ă©tĂ© largement retravaillĂ© ; par exemple, de nombreuses parties sont maintenant synchronisĂ©es Ă  l'aide de mutex et de verrous de lecture/Ă©criture, et des types atomiques sont utilisĂ©s dans le code. Lors des tests de performance, la nouvelle mise en Ɠuvre parallĂ©lisable pouvait compiler jusqu'Ă  2 % plus lentement en mode mono-thread (-Z threads=1), mais lorsque le nombre de threads Ă©tait supĂ©rieur Ă  un, la vitesse augmentait considĂ©rablement. Par exemple, en utilisant 8 threads (-Z threads=8), dans certaines situations, le temps de compilation a pu ĂȘtre rĂ©duit de 50 %.

Cependant, le rĂ©sultat dĂ©pend fortement des paramĂštres de l'environnement et du code compilĂ© - pour des programmes trĂšs courts qui se compilent dĂ©jĂ  rapidement, la compilation en mode multithread peut ĂȘtre plus lente. De plus, la consommation de mĂ©moire en mode multithread peut augmenter considĂ©rablement, par exemple, des tests ont montrĂ© une croissance de la consommation de mĂ©moire allant jusqu'Ă  35%.

Source : opennet.ru

Acheter un hĂ©bergement fiable pour les sites avec protection DDoS, serveurs VPS VDS đŸ”„ Acheter un hĂ©bergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster