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

Actualités Discussion :

Faut-il investir dans l’optimisation du code ou l’achat de matériel puissant ?

  1. #1
    Expert éminent sénior

    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mars 2013
    Messages
    426
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2013
    Messages : 426
    Points : 32 561
    Points
    32 561
    Par défaut Faut-il investir dans l’optimisation du code ou l’achat de matériel puissant ?
    Faut-il investir dans l’optimisation du code ou l’achat de matériel puissant ?
    un blogueur opte pour le second cas, car les programmeurs coûtent cher

    Si vous deviez améliorer les performances d’une application, opteriez-vous pour l’optimisation du code ou pour l’achat de nouveaux appareils puissants ? Pour Jeff Atwood, créateur du site StackOverflow, la question ne devrait même pas se poser.

    Selon celui-ci, les programmeurs coûtent excessivement cher alors que les périphériques puissants comme les serveurs le sont moins. D’après Jeff Atwood, la paie mensuelle du plus modeste des programmeurs aux États-Unis lui a permis d’acheter deux serveurs puissants, ainsi qu’un disque de sauvegarde sans compter les unités redondantes de disques pour StackOverflow.


    D’après Jeff, les gains de performances et de productivité réalisés avec l’achat de ce matériel haut de gamme se sont faits rapidement ressentir. Autrement dit, avec un bon matériel, l’amélioration des performances suit toujours. Cependant, même en embauchant des programmeurs qu’elle paye modestement, une entreprise court un risque énorme.

    La probabilité que la productivité de ces programmeurs soit faible de façon à ce que la firme n’ait pas un retour sur investissement conséquent dans le temps est élevée. Jeff dit d’ailleurs qu’il comprend maintenant les entreprises qui mettent constamment leurs programmeurs sous pression.

    Par contre, il reconnaît que la machine seule ne suffit pas. Un programmeur expert devra se charger de produire du code optimisé pour le matériel haut de gamme, de façon à tirer pleinement parti de la totalité de sa puissance.

    Une fois encore, il met en garde. Déjà que ces programmeurs experts coûteront horriblement cher, l’optimisation est une pratique déconseillée, voire même dangereuse. Il cite M.A Jackson qui donne des règles d’or sur l’optimisation du code « Règle 1: Ne jamais l’utiliser. Règle 2: Si vous êtes expert, ne l’utilisez pas maintenant. »

    Autrement dit, Jeff conseille encore une fois d’utiliser les performances de calcul des nouveaux périphériques au profit d’investissements dans du code optimisé.

    Source : Coding Horror

    Et vous ?

    Que pensez-vous du point de vue de Jeff Atwood ?

    Et si vous aviez le choix entre optimiser le code et améliorer les performances via les équipements, que choisiriez-vous ?

  2. #2
    Expert éminent sénior
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    6 803
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 6 803
    Points : 32 058
    Points
    32 058
    Par défaut
    Il a quelques années, son article. J'ai du le mettre en lien deux ou trois fois dans le coin.....

    Et surtout, l'article original dit qu'on ferait mieux de mettre du matos sur les problèmes de performances pour utiliser les programmeurs à faire de la valeur ajoutée, pas à virer tous les programmeurs.

    On est pas vendredi, pourtant...
    Les 4 règles d'airain du développement informatique sont, d'après Michael C. Kasten :
    1)on ne peut pas établir un chiffrage tant qu'on a pas finalisé la conception
    2)on ne peut pas finaliser la conception tant qu'on a pas complètement compris toutes les exigences
    3)le temps de comprendre toutes les exigences, le projet est terminé
    4)le temps de terminer le projet, les exigences ont changé
    Et le serment de non-allégiance :
    Je promets de n’exclure aucune idée sur la base de sa source mais de donner toute la considération nécessaire aux idées de toutes les écoles ou lignes de pensées afin de trouver celle qui est la mieux adaptée à une situation donnée.

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

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

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 445
    Points
    28 445
    Par défaut
    sur la question des performances c'est peut-être pas faux...acheter une machine suffisamment puissante pour faire tourner une appli c'est une quantité mesurable, le temps que mettra le développeur pour rendre l'application plus véloce sur la machine existante l'est moins.

    par contre, du point de vu fiabilité, la plus puissante des machines ne corrigera jamais les bugs toute seule
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  4. #4
    Membre actif
    Inscrit en
    Septembre 2006
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 72
    Points : 288
    Points
    288
    Par défaut Généralisable
    Malheureusement il a raison.

    Conséquences : trop de logiciel récents et grands publics rament sur de vieilles bécanes alors qu'ils n'ont pas plus de fonctionnalités que leurs anciennes versions.

  5. #5
    Expert confirmé Avatar de AoCannaille
    Inscrit en
    Juin 2009
    Messages
    1 413
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 1 413
    Points : 4 734
    Points
    4 734
    Par défaut
    Si je me souviens bien de mes cours d'algo d'IUT, en particulier de ceux sur la compléxité, il me semble que passer un algo de n^3 à nlog(n) permettait de faire passer des calculs d'un an à quelques minutes.

    Il faut cibler le niveau d'optim. Optimiser des variables intermédiaires, un passage de boucle par-ci par là avec while/do while ça ne vaut effectivement probablement pas le coup. En particulier si l'algo devient moins clair donc moins maintenable.

    Par contre, l'optim' basique des algos reste en ce sens indispensable.

    de mémoire Knuth disait que les étapes dans l’algorithmique c'était :
    1. On écrit un algo naïf qui répond aux exigences fonctionnelles
    2. on l'optimise
    3. on le rend "propre" et maintenable (nom de variable, indentation, commentaires etc...)


    pour moi, en résumé:
    L'optimisation du code à la conception reste indispensable.
    L'optimisation du code en production, pour un delta inférieur à n² peut être résolu en changeant de matos.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 187
    Points : 434
    Points
    434
    Par défaut
    C'est pas toujours vrai. Dans ma boite, sur du matériel mobile, on a eu un investissement d'un million d'euros rien que le matériel (ajoutez à ça les frais annexes) pour une appli sur laquelle bosse un dev et demie.

    Suite à des problèmes de performances justement, on a eu le choix entre réinvestir à nouveau dans du matériel ou mettre un dev sur l'optimisation de code pendant 6 mois... Le calcul est vite fait.

  7. #7
    Membre expert

    Avatar de germinolegrand
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Octobre 2010
    Messages
    738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Octobre 2010
    Messages : 738
    Points : 3 892
    Points
    3 892
    Par défaut
    Visiblement pour FB, ça coûte nettement moins cher d'investir dans l'optimisation (et ils emploient des experts -cher- et pas des moindres !) que dans les machines comme nous le précise Andrei Alexandrescu récemment .

    remarque de JolyLoic à ce sujet

  8. #8
    Membre éclairé

    Homme Profil pro
    Architecture logiciel
    Inscrit en
    Janvier 2013
    Messages
    103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

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

    Informations forums :
    Inscription : Janvier 2013
    Messages : 103
    Points : 713
    Points
    713
    Par défaut
    Que pensez-vous du point de vue de Jeff Atwood ?
    Il a tord et raison. Il a tord car il faut d'abord trouver le goulot d'étranglement. Il a raison dans le sens ou changer le code n'apporte pas le retour sur investissement.

    Et si vous aviez le choix entre optimiser le code et améliorer les performances via les équipements, que choisiriez-vous ?
    En dev, on cherche à optimiser un minimum dans un temps raisonnable (ie. dans le temps alloué pour créer cette partie du projet).
    En production, on commence par faire des analyses de performances et on réhausse les serveurs ou on ajoute des serveurs avant d'ouvrir le code (c'est aussi plus rapide à faire qu'analyser le code....)

  9. #9
    Modérateur
    Avatar de kolodz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    2 211
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 211
    Points : 8 316
    Points
    8 316
    Billets dans le blog
    52
    Par défaut
    Le propos se résume plus à ces étapes :

    1. Throw cheap, faster hardware at the performance problem.
    2. If the application now meets your performance goals, stop.
    3. Benchmark your code to identify specifically where the performance problems are.
    4. Analyze and optimize the areas that you identified in the previous step.
    5. If the application now meets your performance goals, stop.
    6. Go to step 1.
    Pour les développeurs que je connais, ceux-ci ont déjà des machines relativement puissante à leur disposition pour leur développement. Dans un cas d'une application d'entreprise, il est certes plus facile d'acheter un second serveur.

    M.A Jackson qui donne des règles d’or sur l’optimisation du code « Règle 1: Ne jamais l’utiliser. Règle 2: Si vous êtes expert, ne l’utilisez pas maintenant. »
    Cela me fait penser à deux exemples vue dans une application :
    1. Le cache plus lent que le calcul des données qu'il met en cache.
    2. L'algorithme qui remplace la bonne requête sur base de donnée.

    Cette règle d'or s'applique directement au premier cas. Mais pour le second, je considère la mise en place de la bonne requête est une optimisation en plus d'être une règle de codage.

    Pour moi une application lente est une application mal codé. Mettre une machine plus puissante, c'est comme mettre plus d'essence dans une voiture qui à le réservoir percé. Ça va bien pour faire les 10 bornes pour rentrer chez soit le vendredi soir.

    Cordialement,
    Patrick Kolodziejczyk.
    Si une réponse vous a été utile pensez à
    Si vous avez eu la réponse à votre question, marquez votre discussion
    Pensez aux FAQs et aux tutoriels et cours.

  10. #10
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 691
    Points : 20 222
    Points
    20 222
    Par défaut
    Citation Envoyé par germinolegrand Voir le message
    Visiblement pour FB, ça coûte nettement moins cher d'investir dans l'optimisation (et ils emploient des experts -cher- et pas des moindres !) que dans les machines comme nous le précise Andrei Alexandrescu récemment .
    Quand une update materiel implique plusieurs centaines voir milliers de serveur effectivement , la réflexion doit être différente.
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  11. #11
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 555
    Points : 1 597
    Points
    1 597
    Par défaut
    L'éternel débat entre la loi de Moore et la loi de Wirth
    Malgré que les deux ont su prouver leur véracité pendant des années, aujourd'hui, la première montre ses limites favorisant à violer la seconde sur certains domaines.

    Le jugement de Jeff Atwood était sans doute bon en 2008, mais il est bien connu que seuls les imbéciles ne changent pas d'avis. Nous sommes bientôt en 2014, les choses ont beaucoup changées et il est peut-être temps de se remettre en question.
    Certains ont déjà commencé avec Microsoft qui optimise son OS Windows depuis Vista ou encore les différents développeurs autour des moteurs JavaScript.
    Comble de l'ironie, les smartphones/tablettes utilisent du matériel beaucoup plus puissant qu'il y a 5ans sans en faire beaucoup plus.

  12. #12
    Membre éclairé

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    264
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 264
    Points : 725
    Points
    725
    Par défaut
    Je crains que son avis, qui a déjà plusieurs années, ne tienne pas la distance vis à vis de la fin de la loi de Moore ainsi que la crise énergétique et le changement de paradigme qu'elle impose…
    "By and large I'm trying to minimize mentions of D in C++ contexts because it's as unfair as bringing a machine gun to a knife fight." - Andrei Alexandrescu

  13. #13
    Membre éprouvé Avatar de Shuty
    Homme Profil pro
    Ingénieur en développement
    Inscrit en
    Octobre 2012
    Messages
    630
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur en développement
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2012
    Messages : 630
    Points : 1 174
    Points
    1 174
    Par défaut
    Ca se discute en fonction de la taille du projet. "Les développeur, ça coute cher" On dirait qu'on est riche quand j'entends ça lol
    Agence web Dim'Solution, créateur de solutions numériques
    Sites internet, ecommerce, logiciels, applications mobiles, référencement (SEO), plugin Prestashop, Magento, WordPress, Joomla!...

    Cours de trading gratuit | Envoyer des sms gratuitement | Envoyer des fax gratuitement | Plateforme de Fax à l'international

  14. #14
    Membre éclairé
    Avatar de yimson
    Homme Profil pro
    Consultant Big Data
    Inscrit en
    Janvier 2009
    Messages
    215
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultant Big Data
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2009
    Messages : 215
    Points : 747
    Points
    747
    Par défaut
    Pour ma part, je pense que la solution est de trouver le compromis, plus clairement le juste milieu. La question a laquelle il faut répondre est la suivante: La baisse de performance de l'application est-elle due à un programme mal écrit ou alors à la baisse de performance de l'équipement sur lequel le programme tourne?

    Il est tout aussi important de penser à un expert dans le matériel, après une investigation on peut se rendre effectivement compte que le problème est par exemple causé par une barrette de RAM qui a rendu l’âme, auquel cas il faut augmenter les performances de l'équipement.

    Par ailleurs, si le problème n'est pas du a l'équipement, il est toujours judicieux de penser à appeler un développeur qui peut avoir un nouvel œil sur les lignes de code du programmes question d'améliorer certains algorithmes et peut être certaines boucles.

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

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

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 445
    Points
    28 445
    Par défaut
    Citation Envoyé par Washmid Voir le message
    C'est pas toujours vrai. Dans ma boite, sur du matériel mobile, on a eu un investissement d'un million d'euros rien que le matériel (ajoutez à ça les frais annexes) pour une appli sur laquelle bosse un dev et demie.

    Suite à des problèmes de performances justement, on a eu le choix entre réinvestir à nouveau dans du matériel ou mettre un dev sur l'optimisation de code pendant 6 mois... Le calcul est vite fait.
    ça ma fait penser à mon premier jeu Android, il est la réécriture sous Android d'un code Delphi pour le défi jeu du serpent, et bien les performances n'étant pas vraiment les mêmes j'ai du revoir le code pour que ça tourne sur une petite tablette; c'est un changement de plateforme avec une baisse de performance certaine.
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  16. #16
    Membre éprouvé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    585
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 585
    Points : 1 139
    Points
    1 139
    Par défaut
    Ca fait 20 ans qu'on "rajoute du disque", "rajoute de la ram", "rajoute du CPU"... Je ne vois pas comment ni pourquoi ça changerait soudain, au prix que coûtent ces équipements par rapport à celui d'un bonhomme pour optimiser !
    L'avis publié ci-dessus est mien et ne reflète pas obligatoirement celui de mon entreprise.

  17. #17
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    1 048
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

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

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 048
    Points : 2 201
    Points
    2 201
    Par défaut
    Moi j'applique la règle des trois make:
    • Make it
    • Make it working
    • Make it working fast


    On déjà content si on arrive à clôturer le point 2 dans un projet...

  18. #18
    Rédacteur
    Avatar de imikado
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    5 239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 239
    Points : 19 100
    Points
    19 100
    Billets dans le blog
    17
    Par défaut
    Les deux mon capitaine, mais je préfère me dire qu'on à fait le maximum sur notre partie (choix techno/cache/index...) avant de demander un upgrade de serveurs
    Framework php sécurisé et simple à prendre en main avec générateur web http://mkframework.com/ (hebergé sur developpez.com)
    Mes cours/tutoriaux

  19. #19
    En attente de confirmation mail

    Profil pro
    Inscrit en
    Septembre 2013
    Messages
    639
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2013
    Messages : 639
    Points : 2 347
    Points
    2 347
    Par défaut
    Citation Envoyé par Cedric Chevalier Voir le message
    Autrement dit, avec un bon matériel, l’amélioration des performances suit toujours. (...)
    Même un étudiant en première année d'informatique sait que ceci est parfaitement faux (sinon je l'invite à refaire sa première année). Si je me trompe, qu'on me dise où trouver le super-matériel qui résoud un problème NP complet en temps raisonnable.

  20. #20
    En attente de confirmation mail

    Profil pro
    Inscrit en
    Septembre 2013
    Messages
    639
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2013
    Messages : 639
    Points : 2 347
    Points
    2 347
    Par défaut
    Je vais reformuler mon propos plus simplement. Avant de se demander s'il faut améliorer l'équipement et / ou optimiser le code, il faut avant tout optimiser les algos (ou s'assurer qu'ils sont déjà optimals) car c'est souvent le plus déterminant.

Discussions similaires

  1. insertion date dans access avec code java
    Par voyageur dans le forum Access
    Réponses: 3
    Dernier message: 20/06/2006, 21h36
  2. Erreur 3141 dans exécution de code
    Par zoom61 dans le forum Access
    Réponses: 13
    Dernier message: 23/03/2006, 17h31
  3. [Photos] Faut-il stocker dans la SGBD ou dans un repertoire?
    Par papy_tergnier dans le forum Décisions SGBD
    Réponses: 2
    Dernier message: 08/12/2005, 14h29

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