IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langages de programmation Discussion :

Faut-il optimiser son code ou le garder lisible ?


Sujet :

Langages de programmation

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 354
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 354
    Par défaut
    Citation Envoyé par pmithrandir Voir le message
    Ah oui, un autre exemple...

    imaginez un tableau de pixel généré en javascript.

    Chaque pixel est en fait une couleur, au final, vous avez une image qui se dessine.

    Vous avez plusieurs choix :
    avoir du code html du type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <div style="background-color:#123456" />
    <div style="background-color:#234561" />
    <div style="background-color:#345612" />
    <div style="background-color:#456123" />
    <div style="background-color:#561234" />
    <div style="background-color:#612345" />
    ...
    plus un peu de code CSS.
    tu peux aussi zipper la page (inflate or gzip) et tu n'auras plus besoin d'optimiser de cette facon :-)

  2. #2
    Membre extrêmement actif
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 273
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 273
    Par défaut
    Ce que montre cet article, c'est surtout la capacité de certains à se perdre dans des considérations techniques assez accessoires et anecdotiques.

    Et ça apparait surtout quand on commence à utiliser dans des projets des éléments ou des technos que l'on croit maitriser et qu'au final on ne maitrise pas tant que ça...

  3. #3
    Membre Expert Avatar de jabbounet
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juin 2009
    Messages
    1 909
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 909
    Par défaut
    Avant de commencer une optimisation sur un système (appli/archi/...), il faut d'abord avoir une solution qui répond au besoin en terme de cas d'utilisation. Mais pas en terme de performance qui est objectif quantifiable à atteindre (occupation mémoire/capacité à monter en charge/transactions par secondes/...)

    Pour moi optimisé n'est en aucun cas synonyme d'illisibilité. Un code correctement optimisé restera lisible si la personne qui le fait est suffisamment consciencieuse pour documenter/commenter/expliquer ses choix.

    Au passage, j'ai aussi vu du code pas optimisé et totalement illisible aussi, en général quand il pose problème, on se fait un nœud au cerveau pour le comprendre et se rendre compte qu'au final ce code ne fait que brasser des octets inutilement et qu'il y'a une façon bien plus simple et efficace de faire la même chose.

    Maintenant si on veut se préoccuper des performances et de la consommation de ressource de l'appli, c'est avant tout un problème d'architecture et de conception. Il faut concevoir les choses dès le départ pour qu'elles puissent être performantes.
    Une conception plus efficace qu'une autre n'a pas de raisons d'être moins lisible.
    Les cas où on doit réellement optimiser un code jusqu'à le rendre illisible sont rarissimes.
    +1,

  4. #4
    Membre Expert
    Avatar de pmithrandir
    Homme Profil pro
    Responsable d'équipe développement
    Inscrit en
    Mai 2004
    Messages
    2 419
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Responsable d'équipe développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 419
    Par défaut
    Citation Envoyé par epsilon68 Voir le message
    tu peux aussi zipper la page (inflate or gzip) et tu n'auras plus besoin d'optimiser de cette facon :-)
    oui, il existe cette possibilité.

    Mon exemple n'était que théorique en fait, pour montrer qu'avec quelques boucles, on arrive parfois, dans de rare cas il est vrai, a des économies de bande passante(ou de traitement) en échange d'une perte de lisibilité.

    Pour la solution canvas, même si c'est HS pour la discussion... HTML 5 n'est pas encore utilisable professionnellement du moment que tout les clients IE ne sont pas sous IE9... on a bien 10 ans devant nous pour y arriver.

  5. #5
    Expert confirmé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    6 814
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 6 814
    Par défaut
    Citation Envoyé par B.AF Voir le message
    J'aime pas ce raisonnement exclusif : ou optimisé ou lisible.
    On peut obtenir les deux.

    En l'occurence là, c'est généraliser un épiphénoméne et ce n'est pas de l'optimisation de code : gagner de l'espace disque (140Mo c'est ridicule de nos jours) ne veut pas dire être plus performant. C'est une appréciation libre.
    Des fois on peut optimiser, et gagner en lisibilité en même temps. Mais, le plus souvent, optimiser, c'est rajouter une finesse. Dans le code que j'a désoptimisé(en faisant sauter la bufferisation), si j'avais du garder la bufferisation, il me fallait rajouté 2 IF aux conditions assez exotiques. Donc rajouter du code. Plus il y a de code - même lisible - et moins c'est lisible. Sans compter - ce qui n'est pas précisé dans l'article - le risque de se gauffrer dans le code ajouté, et de laisser passer un bug rare(les pires, car difficile à detecter et à corriger).

  6. #6
    Membre éclairé Avatar de Hellwing
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    538
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Avril 2008
    Messages : 538
    Par défaut
    Citation Envoyé par B.AF Voir le message
    J'aime pas ce raisonnement exclusif : ou optimisé ou lisible.
    On peut obtenir les deux.

    En l'occurence là, c'est généraliser un épiphénoméne et ce n'est pas de l'optimisation de code : gagner de l'espace disque (140Mo c'est ridicule de nos jours) ne veut pas dire être plus performant. C'est une appréciation libre.
    Ben justement, dans l'exemple de la news, on ne parle pas d'optimisation de code mais d'espace disque. Et écrire le moins de caractères possibles pour gagner de la place nuit forcément à la lisibilité.

  7. #7
    Membre très actif
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    688
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 688
    Par défaut
    Moi je préfère accès sur l'optimisation des performances.
    La limite est dès lors que ça devient ridicule en terme de gain/d'énergie/de lisibilité

  8. #8
    Membre averti
    Inscrit en
    Février 2006
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 72
    Par défaut
    Réponse pragmatique : 80/20.

    Toujours partir d'un code non-optimisé mais clair, lisible, maintenable (sauf cas particuliers, voir ci-dessous).
    Si pas de problèmes de performances, on en reste là.
    Si problème de performances, on commence à regarder, quitte à aller jusqu'au 80/20 : optimiser les 20% de code qui s'exécute 80% du temps.

    Après il y a bien sûr des exceptions : il y a certaines choses dont on voit bien dès le départ, en fonction des besoins, qu'il s'agira de code "sensible" qui gagnera à être dès le départ gaulé dans une optique d'avoir des bonnes performances.
    Rappel : en effet, parfois "ré-optimiser après coup" peut être particulièrement couteux sur la conception initiale est mal adaptée.

  9. #9
    Membre très actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    279
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 279
    Par défaut Partie du code
    Bonjour,

    Aprés rien n'empèche d'optimiser que certaines partie du code. cela feras un bon compromis entre lisibilité et rapidité, il suffira de mieux/plus "commentariser" ces partie.

    Je pense notamment au domaine du jeu vidéo 3D qui demande surement certaines optimisations de la part du développeur en plus des optimisations du compilateur.

    Cordialement.

  10. #10
    Expert éminent
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Par défaut
    il faudrait demander son avis à Google
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  11. #11
    Membre averti

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Novembre 2004
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8
    Par défaut
    Bonjour à tous,


    Ma foi, je réponds comme l'ingénieur standard : çà dépend du besoin.

    Mais une chose est sûre pour moi : on fait d'abord un code aussi lisible que possible, et après, une fois qu'il fonctionne bien, on commence à se poser la question de son optimisation.

    Comme cela, il est possible de partir d'une base saine, de repérer facilement les zones importantes, d'utiliser les outils appropriés et d'optimiser réellement ce qui en vaut le coup. Avec quelques ligne de commentaires bien sentis pour décrire les bidouilles qui ne seraient pas compréhensibles du premier coup d'œil, alors oui, on peut optimiser en restant relativement lisible.

  12. #12
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    410
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 410
    Par défaut
    De quelle école êtes-vous ? Celle du code lisible ou au contraire, préférez-vous l'optimisation des performances ?
    La question est incomplète.... tout dépend du problème abordé. La question est de connaitre la criticité de la performance du problème, c'est tout.

  13. #13
    Membre actif
    Inscrit en
    Novembre 2007
    Messages
    103
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 103
    Par défaut
    J ai appris a programmer sur des ordi qui avaient 100 fois moins de perf que le plus bete telephone sur le marche aujourd hui , alors j ai pris la "mauvaise" habitude de sur optimiser mon code. au point ou parfois quand je lit certain code bien "lisible" et bien "commente" je suis completement perdu et je mets des heures a comprendre pourquoi avoir ecrit ca ainsi ...
    certes il est vrai qu aujourd hui nos ordi sont des betes de courses avec des memoires et des hd gigantesques . Mais imaginez vous que vous deviez ecrire un soft qui tournerai sur un pc datant de 10 ou 15 ans , cela donnerai quoi ?
    je me souviens que sur un hd de 20 mega , j avait enormement de soft a mes debuts , pas des soft ridicules de jeux , je parle de suite a l office ou des soft d architecture . aujourd hui la puissance de nos pc conduit a une sorte de confort de travail du programmeur qui bien souvent si son soft est un peu lent se dira "bah dans 6 mois le pc qui sera la norme le fera tourner correctement alors je m en tape". Moi la ou je vit , je doit souvent faire des soft qui tournent sur de vieux p3 asthmatique voir des p2 , d ou des heures de galeres pour simplement faire que le chargement du soft n endorme pas son utilisateur. toutes cette debauche de puissance me semble bien plus utile dans un certain sens pour les jeux que pour les utilitaires ou une reelle optimisation du code algo etc peut faire de vrai miracle

  14. #14
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 8
    Par défaut
    C'est par ce genre de raisonnement qu'on a aujourd'hui des programmes qui font à peu près les même choses qu'il y'a 10 ans, mais qui prennent 100 fois plus d'espace disque, occupent 20 fois plus de mémoire et nécessitent des CPU de plus en plus puissants.

    La course au besoin de puissance n'est pas une bonne chose. Certes, les coûts des machines diminuent, mais est-ce pour autant une raison de se précipiter dans le modèle de la société de sur-consommation? Pourquoi ne peut-on plus garder son PC plus d'1 an avant de le voir étouffer et sentir son disque dur partir dans une crise de spasmophilie dès qu'on lance un programme?

    Il faut réussir à trouver un équilibre entre les deux.

  15. #15
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 483
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 483
    Par défaut
    Il ne faut pas perdre de vue non plus qu'on demande de plus en plus de chose à ces programmes. Ce qu'on demandais d'un traitement de texte il y a 10 ans n'est pas ce qu'on en demande aujourd'hui. Avec l'augementation des fonctionnalité et des exigences, forcément le code deviens plus gros. Maintenant, ca n'empeche pas d'optimiser, mais on dois le faire quand on a identifié les endroit ou c'était nécessaire. Systématiquement tout optimiser c'est arriver au résultat inverse de celui voulu.

  16. #16
    Expert éminent
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    Il ne faut pas perdre de vue non plus qu'on demande de plus en plus de chose à ces programmes. Ce qu'on demandais d'un traitement de texte il y a 10 ans n'est pas ce qu'on en demande aujourd'hui. Avec l'augementation des fonctionnalité et des exigences, forcément le code deviens plus gros. Maintenant, ca n'empeche pas d'optimiser, mais on dois le faire quand on a identifié les endroit ou c'était nécessaire. Systématiquement tout optimiser c'est arriver au résultat inverse de celui voulu.
    je connais peu de gens qui utilisent plus de 5% des fonctionnalités de Word ou Excel
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  17. #17
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 483
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 483
    Par défaut
    Citation Envoyé par Paul TOTH Voir le message
    je connais peu de gens qui utilisent plus de 5% des fonctionnalités de Word ou Excel
    au jour le jour, non, mais ces 95% finiront par servir. Par expérience, certains fonctionnalités dans certains logiciels, c'est le genre de trucs que j'utilise une fois toutes les lunes. Mais quand j'en ai besoin, je suis content qu'elles soient là (comme la semaine passée, j'ai demandé à oocalc de me faire une régression linéaire et 2 3 trucs de stats)

  18. #18
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par atc666 Voir le message
    J ai appris a programmer sur des ordi qui avaient 100 fois moins de perf que le plus bete telephone sur le marche aujourd hui , alors j ai pris la "mauvaise" habitude de sur optimiser mon code. au point ou parfois quand je lit certain code bien "lisible" et bien "commente" je suis completement perdu et je mets des heures a comprendre pourquoi avoir ecrit ca ainsi ...
    et tu avais déjà tort...


    Comme le dit SinDronX :

    Citation Envoyé par SinDromX Voir le message
    C'est par ce genre de raisonnement qu'on a aujourd'hui des programmes qui font à peu près les même choses qu'il y'a 10 ans, mais qui prennent 100 fois plus d'espace disque, occupent 20 fois plus de mémoire et nécessitent des CPU de plus en plus puissants.
    J'ai commencé avec des ordis 10 000 fois moins puissants que ceux d'aujourd'hui, et même il y a peu avec seulement 4 Go (ce qui était déjà gigantesque) d'HD.

    C'est bizarre, mais mes codes (pourtant non "optimisés" à la brute) tournent toujours, et de plus en plus vite... tout en ne consommant quasi rien ... Et en faisant toujours ce pour quoi ils étaient conçus (et qui était complexe)...



    Je ré-itère donc ma position : vouloir mette de l'assembleur, faire de l'obfuscation, tenter d'optimiser des instructions par un code illisible est une pratique non seulement suicidaire si c'est au sein d'une entreprise, mais également personnelle, et qui n'apporte strictement rien...

    Un bon code optimisé est un code optimisé en usage mémoire et en algorithme.

    Tout le reste est tellement dépendant des architectures qu'il faudra le refaire dès le prochain changement, et donc perdre en temps (et donc en argent, et donc en optimisation) ce qui avait été fait...

    A quelques exceptions près.... extrêmement rares...

  19. #19
    Membre Expert Avatar de jabbounet
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juin 2009
    Messages
    1 909
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 909
    Par défaut
    Citation Envoyé par souviron34 Voir le message
    et tu avais déjà tort...

    Je ré-itère donc ma position : vouloir mette de l'assembleur, faire de l'obfuscation, tenter d'optimiser des instructions par un code illisible est une pratique non seulement suicidaire si c'est au sein d'une entreprise, mais également personnelle, et qui n'apporte strictement rien...
    je suis assez d'accord, d'ailleurs la dernière fois que l'on ma demandé d'optimiser quelque chose, le code était relativement illisible et pas commenté.

    Après analyse des algos et de ce qu'ils devaient faire on s'est rendu compte qu'il étaient inutilement complexe et qu'ils "bouibouitaient" inutilement.

    bref après l'optimisation le code était moins complexe et obscure, plus lisible et correctement commenté et marchait beaucoup mieux.

  20. #20
    Membre émérite Avatar de chaplin
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 215
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 215
    Par défaut
    Citation Envoyé par souviron34 Voir le message
    et tu avais déjà tort..

    1) Un bon code optimisé est un code optimisé en usage mémoire et en algorithme.

    2) Tout le reste est tellement dépendant des architectures qu'il faudra le refaire dès le prochain changement, et donc perdre en temps (et donc en argent, et donc en optimisation)
    Tu soulèves un paradoxe, dans la mesure où l'architecture fait partie de la conception d'un programme, au point où l'algorithme et la conception sont deux notions a part entière, pour ne pas dire complémentaires et du coup sont des critères à prendre individuellement en compte dans l'optimisation.

    Même un langage de programmation peut entrer dans la notion d'optimisation si on parle de compilation native, managée ou dynamique.

    Est ce que parler "d'optimisation du code" est la bonne expression, c'est une autre question.

Discussions similaires

  1. Faut-il commenter son code source pour le rendre plus lisible et maintenable ?
    Par mayayu dans le forum Débats sur le développement - Le Best Of
    Réponses: 149
    Dernier message: 09/11/2009, 03h30
  2. optimiser son code
    Par giuseppe2 dans le forum VB.NET
    Réponses: 2
    Dernier message: 08/09/2008, 16h36
  3. comment optimiser son code en calcul ???
    Par gronaze dans le forum C
    Réponses: 5
    Dernier message: 21/03/2006, 11h41
  4. Réponses: 9
    Dernier message: 22/02/2006, 12h32
  5. [Perf] Comment optimiser son code ?
    Par Frifron dans le forum Général Java
    Réponses: 12
    Dernier message: 11/08/2005, 10h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo