Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

Le langage C ne sera-t-il jamais battu en termes de rapidité d'exécution et de faible consommation d'énergie ?
Voici les résultats d'une étude sur 27 langages de programmation les plus populaires

Le , par Victor Alisson

101PARTAGES

29  0 
L’étude réalisée par des chercheurs portugais révèle que C se positionne comme le langage de programmation le plus performant en termes de temps d’exécution et de faible consommation d’énergie (du CPU et de la RAM). C’est le résultat issu du benchmark ainsi effectué se basant sur le Computer Language Benchmarks Game (CLBG) pour comparer les 27 langages les plus populaires auprès des développeurs. Le papier relatant cette étude a été publié pour la première fois en 2017 dans International Conference on Software Language Engineering (SLE) ; une mise à jour de cette analyse comparative a été effectuée pour l’année 2020, mais concernant uniquement les langages fonctionnels.

Pour revenir aux résultats de l’étude initialement réalisée (2017), C affiche les valeurs les plus faibles par rapport à celles des 26 autres langages considérés en ce qui concerne le temps d’exécution (2019.26 ms) et la consommation d’énergie (57.86 J) dans l’exécution des solutions relatives aux dix problèmes retenus dans l’initiative CLBG. En revanche, c’est Pascal qui affiche la consommation de mémoire la moins élevée (65.96 Mb). La normalisation des valeurs de ces trois variables (en divisant les valeurs associées à chaque langage par ces valeurs minimales) a permis de dresser le tableau ci-après, les valeurs étant rangées de manière croissante :


Tableau des valeurs normalisées de l’énergie consommée, du temps d’exécution, et de la mémoire occupée pour chaque langage

L’on constate que C figure tout de même en troisième place en matière de consommation de mémoire, derrière Pascal et Go. Sur ce point, la différence entre C et Pascal est de l’ordre de 11.21 Mb, c’est-à-dire que le premier est 1.17 fois plus consommateur de mémoire que le second.

La mise à jour 2020 (voir tableau suivant), quant à elle, considère uniquement dix langages fonctionnels, dont le nouveau venu : Julia, un langage de programmation de haut niveau créé en 2009 et publié au grand public en 2012. Dorénavant, Julia aurait gagné un certain succès auprès de la communauté scientifique en 2018, justifiant alors son intégration dans l’échantillon du benchmark. En fait, Julia vient se placer juste derrière Rust.


Tableau des valeurs normalisées pour les langages fonctionnels

Il faut tout de même dire que les rangs présentés dans ce tableau de la mise à jour 2020 n’ont pas beaucoup changé par rapport à ceux de l’étude de 2017. Ainsi, Rust tient toujours la première place du classement dans cette catégorie de langages (fonctionnels). L’on remarque tout simplement la remontée de Lisp en termes de performance énergétique et la descente de Haskell en ce qui concerne la rapidité d’exécution.

Certes, dans l’étude de 2017, Rust suit de près le langage C avec des différences de l’ordre de 80.77 ms en temps d’exécution et de 1.74 J en énergie consommée (ce qui peut être considéré comme faible comparé aux valeurs associées aux autres langages de programmation en bas de classement). L’on constate ensuite que la nouvelle version de Rust consomme moins d’énergie et s’exécute plus rapidement par rapport à celle qui est prise en compte dans l’étude de 2017.

Toutefois, les différences ne sont pas encore suffisantes pour dépasser C dans le classement, car le ratio entre l’énergie consommée et le temps d’exécution (l’équivalent de la puissance exprimée en kW) pour Rust reste inchangé (0.039). De plus, ce dernier devient plus vorace dans la consommation de mémoire. En tout cas, la performance de la nouvelle version de Rust ne dépasse pas encore celle de C en valeur absolue (pour les trois variables étudiées).

En somme, le langage C reste indétrônable, et l’on se demande jusqu’à quand il préservera cette position. Il convient toutefois de noter que cela ne permet pas de conclure qu’il y a une relation fonctionnelle entre les trois variables de l’étude (énergie consommée, temps d’exécution, mémoire consommée).

Sources : Software Language Engineering (SLE), GitHub (Energy Languages)

Et vous ?

Quelle signification ont ces chiffres pour vous ?

Quelle place accordez-vous à C dans vos pratiques ?

Voir aussi :

Programmation : une étude révèle les langages les plus voraces en énergie : Perl, Python et Ruby en tête, C, Rust et C++, les langages les plus verts

Le langage de programmation Julia gagne de plus en plus en popularité au sein de la communauté scientifique depuis janvier 2018

Pourquoi le langage C++ demeure incontournable 35 ans après sa sortie ?

C redevient le langage le plus utilisé devant Java et C++ ?

Quel avenir pour le langage C ? Un développeur expérimenté fait ses adieux au langage et livre ses inquiétudes quant à son avenir

Une erreur dans cette actualité ? Signalez-le nous !

Avatar de rawsrc
Expert éminent sénior https://www.developpez.com
Le 12/03/2020 à 14:41
en tout cas, je suis sacrément impressionné par Rust.
Sur la programmation système et autres logiciels bas niveau, c'est carrément bluffant.

Je vais sortir ma boule de cristal et comme plusieurs personnes autour de moi, je prédis un avenir de dingue à ce langage.

À titre perso, je suis en train de le découvrir. Comme disent les jeunes : c'est d'la balle
8  0 
Avatar de Uther
Expert éminent sénior https://www.developpez.com
Le 12/03/2020 à 17:43
Citation Envoyé par Victor Alisson Voir le message
Quelle signification ont ces chiffres pour vous?
Je pense que ces chiffres sont à prendre avec, au mieux, de très grosses pincettes vu qu'ils se basent sur le Benchmark Game : un ensemble de micro-benchmark qui correspondent a des problèmes très précis, soumis par des volontaires. Donc:
  • Les résultats ne sont pas forcément représentatif des performances sur des applications lourdes et/ou avec un longue durée de vie.
  • Même si la plupart des langages commencent a avoir des implémentation plutôt bonnes, rien ne garantit que les soumission aient toutes eu droit à une qualité d'optimisation optimale
  • Le code soumis n'est pas forcément représentatif d'un vrai code, étant donné que dans certains langages, certaines optimisations peuvent être tellement complexes et inconstantes qu'elle ne seraient pas utilisées dans du code idiomatique.


Par exemple, Rust était bien en dessous du C quand il a été introduit dans le jeu, avant que la communauté ne soumette des programmes plus optimisés.

Citation Envoyé par Victor Alisson Voir le message
Quelle place accordez-vous à C dans vos pratiques
C est un langage incontournable de part son historique dans le domaine du bas niveau, et cela devrait durer encore pour un moment. Cependant, si aujourd'hui je peux avoir le choix, je lui préfèrerai Rust.

Citation Envoyé par L33tige Voir le message
Je suis surpris de la position du JS.
Moi pas vraiment. Il est clairement en dessous de la plupart des langages bas niveau (C/C++/Rust) et statiquement typé (Java/C#/Go), mais bien au dessus des langages sans grosses prétention de performance comme (Perl, Python, Lua, Php,...)
Tu le voyais plus haut ou plus bas?

Citation Envoyé par strato35 Voir le message
J'ai une question bête (vrai question hein, pas juste un sarcasme ou autre), mais les autres langages du tableau, ils sont inspiré de quoi ? Reprennent t-il la logique du C ? Et quid de leurs compilateur / interpréteur ? C'est autre chose que quelque chose qui se réfère au C ?
C'est difficile a répondre pour tous, le classement contient quand même un certain nombre de langage assez variés. On peut toujours trouver des points communs avec pour la plupart des langages, et des langages peuvent se ressembler sur certains points et s’opposer sur d'autres.

Globalement on peut dire que les langages du haut du tableau (C,Rust,C++,Ada) sont plutôt des langage a typage statique, un runtime léger (pas de GC) et des capacités bas niveau.

Citation Envoyé par grunk Voir le message
C à en revanche un avantage que les autres n'arriveront probablement jamais a rattraper c'est la quantité astronomique de lib de renom disponible.
Les bibliothèque C sont utilisable assez facilement en Rust.
5  0 
Avatar de la.lune
Membre chevronné https://www.developpez.com
Le 12/03/2020 à 20:03
Les gens qui nous vantent de python qui enregistre une forte croissance, doivent vraiment nous trouver les arguments devant cette position de python. Si python continue à devenir le langage de programme le plus utilisé donc prochainement il faut s'assurer que la majorité des programmes vont contribuer à l'échauffement climatique.
6  1 
Avatar de denisys
Membre éprouvé https://www.developpez.com
Le 13/03/2020 à 9:30
Les développeurs python doivent apprendre à coder avec un langage plus écologique, si ils ne veulent pas s’attirer les foudres de Greta Thunberg !!
5  0 
Avatar de VBurel
Membre habitué https://www.developpez.com
Le 16/03/2020 à 9:40
Le 'C' avec ou sans ++, va rester le langage des langages en informatique (ca fait 30 ans qu'on le dit). Pour des questions d’universalité, de maitrise et enfin on en parle : de dépense énergétique !

En effet, c’est l’axe de recherche qui pourrait changer les rapports de force, notamment pour l’Europe qui pourrait revenir dans la course si nos industrie IT se mettaient à refaire tout ce qui est déjà fait , mais programmé comme il faut, avec donc une dépense énergétique 2 fois, 10 fois, 100 fois moindre dans certain cas.

S’il reste des programmeurs dans ce pays… foncez sur l’industrialisation optimisée!
5  0 
Avatar de grunk
Modérateur https://www.developpez.com
Le 12/03/2020 à 14:48
Si C n'évolue pas , Rust va surement prendre plus de place. Il a des performances très proche et l'avantage des langages modernes (gestionnaire de dépendance entre autre). C à en revanche un avantage que les autres n'arriveront probablement jamais a rattraper c'est la quantité astronomique de lib de renom disponible.
5  1 
Avatar de gb_68
Membre confirmé https://www.developpez.com
Le 12/03/2020 à 14:51
Citation Envoyé par Victor Alisson Voir le message
Quelle signification ont ces chiffres pour vous ?
#pragma omp parallel for ...
Quand j'ai vu qu'ils ont utilisé le "Computer Language Benchmarks Game", je me suis demandé s'ils avait bien choisi des exemples qui n'utilisaient pas des extensions externes aux langages ; visiblement non (omp en C / C++ / Fortran).

Cela n'enlève pas la qualité des optimisations possibles en C (et dans les autres langages), mais ce n'est pas une comparaison purement entre "langages", mais entre [langages + extensions apportées + et forcément qualité de la chaîne de compilation].
5  1 
Avatar de CaptainDangeax
Membre éprouvé https://www.developpez.com
Le 12/03/2020 à 16:37
Je laisse de côté les langages interprétés type Perl et Python, et les langages s'exécutant dans une moteur d'exécution type Java. Les langages compilés finissent tous à la fin par du langage machine, exécuté par le processeur. Alors C plus rapide ou moins rapide que Rust ou C++, ça dépend surtout du compilateur et de comment le développeur qui fait les tests optimise son code. Moi qui fait du microcontrôleur, j'ai des piles d'optimisations pour le langage C, par exemple toujours faire des boucles décrémentes qui se terminent à 0 pour gagner 1 instruction à chaque itération : pas besoin de faire de comparaison.
Après si tu veux convertir un entier 16 bits en une chaîne de 5 chiffres décimaux, tu peux le faire avec du code et des divisions, ou alors en logique cablée et optimisée à la quine mac cluskey, ce qui est beaucoup beaucoup plus rapide en exécution mais demande beaucoup beaucoup plus d'investissement et d'assembleur.
4  0 
Avatar de CaptainDangeax
Membre éprouvé https://www.developpez.com
Le 13/03/2020 à 10:30
Il me revient un exemple en tête. Je devais faire une recherche dans des logs. Je le fais en python + regex, c'est le plus facile pour moi. Mébon, 100 lignes à la seconde, ce n'était pas jouable. Je ré-écris le truc en C avec une lib regex, bah pas mieux.
Finalement, j'ai utilisé strstr et strncpy et j'ai multiplié la performance par 100. Comme quoi, ce n'est pas tellement le langage, mais plutôt le bon usage de la bonne librairie...
5  1 
Avatar de PC235
Futur Membre du Club https://www.developpez.com
Le 12/03/2020 à 13:58
Le moteur V8 de google compile le Javascript à la volée.
D'où les perfs pas trop mauvaises.
3  0