Rust surpasse C ++ avec les résultats du jeu Benchmarks

Au début de ce mois, il y a eu une petite victoire. Selon les derniers résultats du benchmark populaire comparant les performances des langages de programmation, Rust se classe deuxième, étant placé entre C et C ++:

image

Pour comparer les performances, la moyenne géométrique de l'exécution de 10 programmes différents est utilisée. Selon des résultats récents, Rust a surpassé le C ++ dans 6 des 10 tâches .

Sous la coupe quelques détails et une opinion sur les perspectives d'avenir.

Comment interpréter correctement les résultats?


Benchmarks Game est un projet populaire dans lequel les langages de programmation sont comparés sur la base de mesures de performances écrites par une communauté de programmes qui résolvent les tâches assignées. En règle générale, pour chaque tâche, il existe au moins plusieurs implémentations bien optimisées dans le même langage. Pour résumer les résultats, une seule implémentation est sélectionnée pour chaque langue et affiche le meilleur résultat.

Il faut s'attendre à ce que pour les langages de programmation populaires, les meilleures solutions proposées soient proches de la limite de performance des langages eux-mêmes. Ces derniers mois, C, C ++ et Rust ont montré des résultats très similaires. Ainsi, nous pouvons conclure qu'un programme Rust bien optimisé en moyenne ne devrait pas être inférieur en termes de performances à des programmes C ou C ++ bien optimisés.

Mais les repères ne veulent rien dire!


Oui et non.

Bien sûr, la différence de performances des différentes implémentations pour votre tâche spécifique dépendra de nombreux facteurs et variera certainement considérablement d'une tâche à l'autre.

Par exemple, Rust montre les pires résultats comparatifs sur des tâches dont les solutions nécessitent l'utilisation d'expressions régulières. À partir de ces résultats, nous pouvons conclure que la mise en œuvre d'expressions régulières dans Rust (regex crate) est plus lente que PCRE2 lors de la résolution de problèmes. D'autre part, Rust est nettement supérieur au C ++ pour les tâches nécessitant des opérations SIMD agressives.

La conclusion générale à tirer: lors du choix entre Rust et C ++, les performances du langage ne peuvent plus être une raison de privilégier le C ++. Du moins sans tests supplémentaires.

La situation actuelle peut-elle changer?


Tout à fait. C, C ++ et Rust montrent des résultats très proches. Maintenant, la différence est si insignifiante que l'erreur de mesure affecte de manière significative la distribution des premières places au classement général. Il est possible que le mois prochain, Rust et C ++ changent à nouveau de place, ou que C laisse la place à Rust ou C ++ en premier.

Faut-il s'attendre à de nouvelles améliorations des performances de Rust?


Oui Le compilateur Rust est un projet relativement récent et un nombre important d'optimisations possibles n'ont pas encore été entièrement implémentées. Le principal obstacle est LLVM, qui, bien qu'il s'agisse d'un traducteur universel, est en pratique bien optimisé pour C / C ++ et ne fonctionne pas très bien avec le bytecode (IR) obtenu à partir d'autres langages de programmation.

Rust est un langage de programmation plus rigoureux que C et C ++. Cela signifie que pour un programme typique, Rust peut donner beaucoup plus de garanties au traducteur (LLVM), qui à son tour peut les utiliser pour effectuer des optimisations plus agressives.

Ainsi, il faut s'attendre à ce que dans les années à venir, Rust puisse améliorer considérablement ses performances. Dans le même temps, les compilateurs C / C ++ se développent depuis plusieurs décennies, et pendant ce temps, ils ont atteint la limite de leurs capacités. Leurs optimisations supplémentaires sont limitées principalement par les fonctionnalités du langage, plutôt que par les implémentations du compilateur.

Il y a quelques années, rares étaient ceux qui pouvaient imaginer qu'il était possible d'écrire du code avec une efficacité élevée supérieure aux performances des implémentations C / C ++, en utilisant un nouveau langage de programmation et même (Dieu me pardonne) une approche fonctionnelle. Je pense que dans les années à venir, Rust prouvera le contraire par l'exemple, en commençant à occuper une première place confiante dans divers tests de performance. Et vous?

Source: https://habr.com/ru/post/fr480608/


All Articles