Faut-il sacrifier la performance pour avoir un code plus lisible ?
Selon un développeur, la performance passe au second degré

0PARTAGES

5  0 
Quel est le critère le plus important pour vous dans un code source ?
Un billet de blog sur Simplify C++! a attiré notre attention, selon son auteur : le C++ aujourd’hui est très performant, mais il ne faut jamais sacrifier la simplicité du code pour gagner en performance.

Le premier argument qu’il cite est que la performance et l’efficacité sont deux choses différentes. En effet, selon ses explications : la performance s’intéresse à la vitesse d’exécution d’une certaine tâche, alors que l’efficacité s’intéresse au temps qu’il faut pour la réaliser. « À première vue, cela peut sembler pareil » déclare-t-il, « mais ce n’est pas le cas. Imaginez que vous devez aller d'un point A à un point B. l’efficacité signifie que vous allez prendre le plus court chemin. La performance signifie que vous allez courir au lieu de marcher ».

Pour lui, il suffit parfois de rendre le code « plus efficace pour obtenir la vitesse souhaitée sans avoir à se soucier des détails de performances », le tout en gardant à l’esprit que la majeure partie du code « ne s’avère pas vital pour la performance globale du programme » et donc son optimisation est inutile.

Mais pourquoi alors la performance n’est pas si importante que cela pour l’auteur du blog ? Tout simplement parce que selon lui « nous ne savons pas vraiment comment écrire du code performant ». Pour appuyer son argument, il explique que le facteur essentiel pour la performance réside dans le nombre d’instructions que le processeur doit exécuter, et ceux-ci « ne sont pas écrit par nous, mais plutôt par le compilateur et son optimiseur », en d’autres termes : « si nous avons vraiment à nous soucier de la performance, nous ne pouvons pas compter sur notre imagination ou sur l'expérience, nous devons utiliser un outil » par exemple « utiliser un profileur ».

Le plus important selon lui c’est d’écrire un code lisible, maintenable et aussi simple que possible. Toutefois, « si vous avez réellement un problème de performance et l'avez localisé, il y a encore de nombreuses options qui sont plus prometteuses que de transformer votre code en un désordre performant, mais complètement illisible », il suffit par exemple de :

  • Utiliser les structures de données les plus performantes possible
  • Connaître et utiliser des bibliothèques de code performantes
  • Toujours utiliser un profileur

Source : Simplify C++ !

Et vous ?

Êtes-vous d’accord avec l’avis de l’auteur du blog ?
Peut-on avoir un code qui soit à la fois efficace, lisible, et performant ?

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

Avatar de temoanatini
Membre averti https://www.developpez.com
Le 07/05/2015 à 9:51
Non. Demandez au client...

« À première vue, cela peut sembler pareil » déclare-t-il, « mais ce n’est pas le cas. Imaginez que vous devez aller d'un point A à un point B. l’efficacité signifie que vous allez prendre le plus court chemin. La performance signifie que vous allez courir au lieu de marcher »
c'est (presque) toujours la même chose.
Avatar de dfiad77pro
Membre expérimenté https://www.developpez.com
Le 07/05/2015 à 10:24
Le soucis c'est que si on sacrifie la performance, l'utilisateur en a rien a faire du code, il va juste avoir envie de jetter son PC par la fenêtre

Faut trouver un équilibre. Et aussi travailler sur la scénaristique.

souvent les appli on des méthodes très unitaires pour des questions de maintenance, ce qui fait qu'on parcours plusieurs fois les mêmes éléments.
Coté requête SQL on retrouve souvent des données non mises en cache et ça joue si on a pas besoin de temps réel.

L'argument de base des entreprises sur une fonctionnalité lente de leurs logiciels internes : "oui mais sans cette fonctionnalité, vous mettriez 2 heures à faire tout à la main"
, sauf que quand le cercle de chargement tourne pendant 2 minutes l'utilisateur à envie de ce pendre et le service informatique à mauvaise réputation.
Avatar de AliusEquinox
Membre régulier https://www.developpez.com
Le 07/05/2015 à 10:43
Je ne suis pas d'accord,
à l'heure de la mobilité, la performance est importante et je trouve un peu étrange d'avoir un discours qui privilégie le code lisible au code performant. D'ailleurs je ne vois aucun lien entre un code performant et un code lisible. Un code performant est écrit par un programmeur qui connaît bien le langage, les structures de données, le compilateur ainsi que l'architecture de la machine sur la quelle il travaille. Un code lisible est écrit par un développeur soucieux de la ré-utilisation de son code ainsi que de sa modularité, etc. Ce sont donc deux contextes de programmation différents et ils peuvent très bien être complémentaires.
Avatar de Kropernic
Expert confirmé https://www.developpez.com
Le 07/05/2015 à 10:51
Attention que dans l'article la distinction est faite entre performance et efficacité.

Avec vos réponses, je n'arrive pas à savoir si vous répondez en tenant compte de cette distinction ou si vous réagissez juste par rapport au titre de l'article sans l'avoir lu.
Avatar de transgohan
Expert éminent https://www.developpez.com
Le 07/05/2015 à 10:55
Cela dépend de la cible finale.
Si c'est un traitement de texte pour un ordinateur de bureau... La performance importe peu, sauf si on tombe dans l'extrême.
Si c'est un programme destiné à tourner sur une centrale nucléaire... Qui oserait répondre autre chose que performance et une bonne formation des développeurs sur cette partie du code ?
Avatar de ManusDei
Expert confirmé https://www.developpez.com
Le 07/05/2015 à 11:05
En gros c'est une réécriture de "On passe 80% du temps dans 20% du code, donc pas besoin de perdre trop de temps à optimiser les 80% du code où on passe 20% du temps".
Avatar de Aiekick
Membre extrêmement actif https://www.developpez.com
Le 07/05/2015 à 11:12
tout dépend de l’utilité du soft.
Avatar de HelpmeMM
Membre éprouvé https://www.developpez.com
Le 07/05/2015 à 11:29
Comparé performance et efficacité...

mouais c'est de la masturbation intellectuelle

si ton code est efficace en terme de temps , c'est qu'ils est performant et si il est performant c'est qu'il est efficace. il joue sur les mot et sur des synonymes.

La vrai question est plutôt est ce que recherché la performance et l'éfficacité , implique nécessairement un code complexe ?

puis-qu’apparemment c'est à ça qu'il veut en arriver , ne chercher pas la performance , chercher plutôt la simplicité du code.

j'avoue que le titre est racoleur et ne reflète pas forcement la pensé de cette "étude".

Mais bon si ton code est simple et que ton programme n'avance pas c'est pas la peine de passé a l'étape livrable.
Avatar de macslan
Membre éclairé https://www.developpez.com
Le 07/05/2015 à 11:32
Citation Envoyé par Amine Horseman Voir le message

« mais ce n’est pas le cas. Imaginez que vous devez aller d'un point A à un point B. l’efficacité signifie que vous allez prendre le plus court chemin. La performance signifie que vous allez courir au lieu de marcher ».
Alors qu'il faut prendre le chemin le plus rapide et non le plus court.

Donc enfaite le code de Windows millénium est super lisible alors que celui de Windows 7 non ?

L'utilisateur finale lui n'est pas développeur donc ses priorités sont différentes du développeur
Avatar de Saverok
Expert éminent https://www.developpez.com
Le 07/05/2015 à 11:42
Un code lisible et bien structuré a rarement des perf désastreuses et il est en général très facilement maintenable.
Autrement dit, en cas de fuite mémoire identifiée, elle est rapide et simple à corriger

Par expérience, les équipes fonctionnelles veulent de la réactivité (la planif et l'anticipation n'est pas tjrs leur point fort, et c'est un euphémisme)
Du coup, l'un des axes les plus forts de la satisfaction client provient de la rapidité des dev pour les correctifs et petites évolutions
Un code lisible et bien structuré permet cette réactivité

De plus, avec le cloud et la virtualisation, migrer de serveur est devenu particulièrement simple et rapide
Si l'appli rame, il est assez simple de la migrer sur un serveur plus puissant pour combler
Les charges salariales sont tellement élevées qu'il est souvent moins coûteux d'investir dans des bécanes plus puissantes que dans des jours/hommes à faire de l'optimisation de code
Contacter le responsable de la rubrique Accueil

Partenaire : Hébergement Web