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 :

Un développeur fait tenir un univers de fractales dans 4096 octets

  1. #1
    Expert éminent sénior

    Inscrit en
    Juillet 2009
    Messages
    3 407
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 407
    Points : 149 059
    Points
    149 059
    Par défaut Un développeur fait tenir un univers de fractales dans 4096 octets
    Un développeur fait tenir un univers de fractales dans 4096 octets
    Se donne-t-on encore suffisamment la peine d'optimiser les codes ?


    A force de voir des effets spéciaux à plusieurs millions de dollars, on en oublierait presque que la vraie performance, celle qui suscite l’enthousiasme, réside aussi dans la capacité de faire plus avec moins. Beaucoup moins.

    C’est une des leçons que nous rappelle un développeur qui vient de réaliser un véritable exploit en faisant tenir un monde de fractale dans un fichier de… 4096 octets.

    Réalisé dans le cadre du concours Assembly 2012 (qu’il a gagné), le résultat est une scène baptisée Hartverdrahtet tout simplement hallucinante (à regarder en HD et en plein écran bien sûr).



    Son auteur, Akronyme Analogiker, a passé deux mois à développer et surtout à optimiser le code avec des outils comme le compresseur Shade Minifier.

    En visionnant cette démo, un ami a d'ailleurs eu une réflexion intéressante sur cette partie du travail. Pour lui, l'augmentation des capacités du hardware ferait que de plus en plus de développeurs ne se donneraient plus vraiment la peine d'optimiser leurs codes. « Du coup les programmes deviennent proportionnellement plus lents qu'avant ».

    Quoiqu’il en soit, ces « 4k » de Hartverdrahtet prouvent que certains s’en préoccupent encore et illustrent à merveille cet adage anglo-saxon : « less is more ».

    Source : Page du projet

    Et vous ?

    Que pensez-vous de cette démo d’un univers de fractales dans un fichier de 4k ?

    Les développeurs se donnent-ils encore la peine d'optimiser leur code ?

  2. #2
    Expert confirmé
    Avatar de GLDavid
    Homme Profil pro
    Service Delivery Manager
    Inscrit en
    Janvier 2003
    Messages
    2 852
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Service Delivery Manager
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 852
    Points : 4 759
    Points
    4 759
    Par défaut
    Magnifique travail !
    Et un gros +1000 à son pote qui dit que le matériel nous rend fainéant et crade !
    Je me souviens d'une démo que j'avais fait où je montrais un de mes programmes Java écrivant des propriétés physico-chimiques dans un fichier. Le programme n'occupe pas plus de 5Mo de mémoire. Une question était: "Quel est l'intérêt de n'occuper que 5Mo alors que tu as plein de mémoire?"

    @++
    GLDavid
    Consultez la FAQ Perl ainsi que mes cours de Perl.
    N'oubliez pas les balises code ni le tag

    Je ne répond à aucune question technique par MP.

  3. #3
    Membre habitué
    Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2010
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2010
    Messages : 66
    Points : 140
    Points
    140
    Par défaut
    J'ai eu la même en correction d'examen.
    J'ai mis un petit bout de code pour éviter d'instancier dans une collection un objet plutot que d'instancier ce même objet avec ses attributs en null si certaines conditions en théories vérifiées dans le constructeur étaient mauvaises.
    Le prof m'a dit "C'est pas la peine de faire ce genre d'optimisations, avec le prix de la mémoire actuellement...."
    Et pourtant j'ai de l'estime pour lui sur ce qu'il pense d'Apple et Facebook...
    "Si ne pas se remettre en question est la marque des imbéciles, alors le doute est l'apanage de l'intelligence"

  4. #4
    Expert confirmé Avatar de ManusDei
    Homme Profil pro
    vilain troll de l'UE
    Inscrit en
    Février 2010
    Messages
    1 619
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : vilain troll de l'UE

    Informations forums :
    Inscription : Février 2010
    Messages : 1 619
    Points : 4 350
    Points
    4 350
    Par défaut
    Citation Envoyé par GLDavid Voir le message
    Une question était: "Quel est l'intérêt de n'occuper que 5Mo alors que tu as plein de mémoire?"
    Si tu avais 500Mo disponibles, et que tu as passé X heures à optimiser ton code pour prendre uniquement 5Mo, effectivement, quel intérêt ? (en dehors de l'intérêt académique)

    Ensuite si tu prévoyais de faire tourner ça sur un FPGA à terme, là l'intérêt est tout à fait compréhensible
    http://www.traducteur-sms.com/ On ne sait jamais quand il va servir, donc il faut toujours le garder sous la main

  5. #5
    Membre extrêmement actif

    Profil pro
    Grand Timonier des Chats
    Inscrit en
    Décembre 2011
    Messages
    879
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Grand Timonier des Chats

    Informations forums :
    Inscription : Décembre 2011
    Messages : 879
    Points : 3 302
    Points
    3 302
    Par défaut
    Citation Envoyé par Exentius Voir le message
    J'ai eu la même en correction d'examen.
    J'ai mis un petit bout de code pour éviter d'instancier dans une collection un objet plutot que d'instancier ce même objet avec ses attributs en null si certaines conditions en théories vérifiées dans le constructeur étaient mauvaises.
    Le prof m'a dit "C'est pas la peine de faire ce genre d'optimisations, avec le prix de la mémoire actuellement...."
    Et pourtant j'ai de l'estime pour lui sur ce qu'il pense d'Apple et Facebook...
    Il a raison: pour une entreprise, aucun intérêt sauf pour quelques cas particuliers.

    Par contre, pour l'utilisateur, la question serait plutôt "quel intérêt a avoir des ordinateurs dernier cri si ça rame autant qu'il y a cinq ans?"

  6. #6
    Membre régulier Avatar de seb2020
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Décembre 2006
    Messages
    133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 133
    Points : 102
    Points
    102
    Par défaut
    Je serais curieux de connaitre le code de son application. J'ai testé sur mon ordinateur "Hartverdrahtet_Final_HQ_16to9_1920x1080_8xSS.exe", et il y a tout qui a planté

    C'est impressionnant quand même

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 18
    Points : 38
    Points
    38
    Par défaut
    Je ne suis pas tellement d'accord avec la conclusion. Les développeurs passent moins de temps à optimiser et se "repose" sur les performances bien plus élevés du hardware MAIS ça permet au final d'être plus productif puisque l'optimisation qui prend du temps ne rajoute pas de fonctionnalité, donc si en peu s'en passer ça dégage du temps pour autre chose comme ajouter plus de fonctionnalités.

    Aujourd'hui, pourquoi passer des jours (disons 5 jours * 8h * 30€/h = 1200€) à faire un programme qui consommerais par exemple 20% de mémoire en plus alors qu'une barrette de RAM de 4Go c'est 30€ ?

    En plus, l'optimisation rajoute souvent des niveaux de complexités qui peuvent rendre la maintenance sur le long terme plus difficile.

    Je suis pour l'optimisation, mais seulement lorsque c'est vraiment nécessaire (cf. la loi de Pareto) et je ne pense pas que c'est forcement de la fainéantise que de ne pas systématiquement optimiser mais plutôt du bon sens.

  8. #8
    Modérateur
    Avatar de Hizin
    Homme Profil pro
    Développeur mobile
    Inscrit en
    Février 2010
    Messages
    2 180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur mobile

    Informations forums :
    Inscription : Février 2010
    Messages : 2 180
    Points : 5 072
    Points
    5 072
    Par défaut
    Citation Envoyé par Rambox
    Aujourd'hui, pourquoi passer des jours (disons 5 jours * 8h * 30€/h = 1200€) à faire un programme qui consommerais par exemple 20% de mémoire en plus alors qu'une barrette de RAM de 4Go c'est 30€ ?
    Peut-être parce que ce programme n'est pas le seul à tourner sur la machine hôte ?
    Peut-être parce que SI chacun des logiciels fait ça, il faut avoir 12 Go de RAM alors que 1.5 Go aurait été nécessaire ? (caricature)
    Peut-être parce que c'est encore important, pas forcément allez dans le tweaking intégral, mais au moins de faire un minimum attention (j'ai une pensée pour les smartphone là) ?
    C'est Android, PAS Androïd, ou Androïde didiou !
    Le premier est un OS, le second est la mauvaise orthographe du troisième, un mot français désignant un robot à forme humaine.

    Membre du comité contre la phrase "ça marche PAS" en titre et/ou explication de problème.

    N'oubliez pas de consulter les FAQ Android et les cours et tutoriels Android

  9. #9
    Membre éprouvé

    Inscrit en
    Janvier 2006
    Messages
    969
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 969
    Points : 958
    Points
    958
    Par défaut
    Au-delà du prix de la mémoire, la course avec la concurrence peut compter énormément.
    Mieux vaut sortir un système qui marche bien avec 1Go de RAM 6 mois avant son concurrent que le même système, avec les mêmes fonctionnalités, super optimisé et qui tourne sur un 286SX 6 mois après.

    Néanmoins, travail magnifique !

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 13
    Points : 31
    Points
    31
    Par défaut
    le fichier fait 4ko, d'accord, mais qu'en est-il de l'empreinte en RAM du programme ? l'auteur a peut etre trouvé un algorithme super permettant ce
    résultat mais qui créé des structures énormes en RAM.
    Dans ce cas, l'optimisation est une optimisation en espace disque, mais pas en ram ni forcément en temps de calcul, ce qui ne rend donc pas le programme moins avare de puissance et rend caduque la remarque sur les besoins hardware qui augmentent.
    ça reste une sacré démonstration cependant et c'est magnifique.

  11. #11
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 18
    Points : 38
    Points
    38
    Par défaut
    Citation Envoyé par Hizin Voir le message
    Peut-être parce que ce programme n'est pas le seul à tourner sur la machine hôte ?
    Peut-être parce que SI chacun des logiciels fait ça, il faut avoir 12 Go de RAM alors que 1.5 Go aurait été nécessaire ? (caricature)
    Peut-être parce que c'est encore important, pas forcément allez dans le tweaking intégral, mais au moins de faire un minimum attention (j'ai une pensée pour les smartphone là) ?
    12Go RAM ça coûte toujours moins chère que deux jours de développement. Mais oui, c'est pas une raison pour coder comme un porc on est d'accord.

    Personnellement j'optimise la plupart du temps en suivant à peu près la loi de Pareto (moins de 20% du code) et seulement une fois le programme terminé quand je peux analyser en situation réel (ou presque) les points qui sont vraiment gourmand. ça me semble être un bon compromis entre perte de temps et gain d'efficacité.

  12. #12
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2012
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gard (Languedoc Roussillon)

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

    Informations forums :
    Inscription : Avril 2012
    Messages : 17
    Points : 65
    Points
    65
    Par défaut
    Petite correction, ce n'est pas l'assembly 2012 (qui aura lieu au mois d'août normalement sauf si ça a changé de date) mais la demoparty revision 2012 qu'il a gagné.
    Après très belle performance pour le codeur.
    En ce qui concerne l'optimisation, s'il y a un vrai gain sur l'empreinte mémoire sur des dispositifs limitées en mémoire par exemple ou un gain de rapidité ou un gain autre, c'est utile de se creuser la tête et de perdre du temps à l'optimisation d'un prog.
    Après si c'est juste pour faire de l'optimisation sur un bout de code qui ne changera rien au final, à quoi ça sert à part à des fins académiques ?

    Ça ne doit pas non plus justifier de coder comme un porc, juste parce qu'il y a de la place.

  13. #13
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2010
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Novembre 2010
    Messages : 51
    Points : 79
    Points
    79
    Par défaut
    Oui mais ce petit programme de 4k (une centaine d'instructions ?!) est très petit mais pour générer le rendu le processeur a du mouliner comme pas possible pour générer chaque pixels. C'est d'ailleurs le concept de ce concours et chaque création est vraiment incroyable, celle ci est même un mystère...
    D'ailleurs ce fichier à pour avantage qu'il tiens dans un bloc minimal de mon DD... pratique !

    Je pense qu'un développeur, bon ou mauvais devrait avant tout ne pas être esclave de son code. Soit de façon concise, faire des boucles et utiliser un peu son processeur là où un débutant aurait déclaré alors que le processeur est fait pour ça.

    allez un coup de pub puisque c'est d'actu, mon programme Java de création de fractales http://thêta.net/evolute-fractal/
    malheureusement il ne le fais pas en 3D mais bon il a le mérite d'exister

  14. #14
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Avril 2007
    Messages : 23
    Points : 48
    Points
    48
    Par défaut
    Réduire l'optimisation à "consommer moins de mémoire" est très réducteur...

    Un programme qui fait tout un tas de choses pour consommer moins de mémoire peut en contrepartie consommer plus de CPU.

    Et il existe tout un tas de domaines en informatique où la mémoire est "gratuite", et où chaque microseconde est importante. Dans ce cas, on allouera tout de suite 16 Go de RAM, avec un système de recyclage pour empêcher la Garbage Collection de bloquer l'application pendant 500 à 2000 ms...

    Tout est question de besoin.

  15. #15
    Membre actif
    Homme Profil pro
    Développeur
    Inscrit en
    Décembre 2008
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Décembre 2008
    Messages : 101
    Points : 256
    Points
    256
    Par défaut
    Et qu'en est il de la maintenabilité de son code (je ne l'ai pas trouvé sur la page du projet) ?

  16. #16
    Modérateur
    Avatar de Hizin
    Homme Profil pro
    Développeur mobile
    Inscrit en
    Février 2010
    Messages
    2 180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur mobile

    Informations forums :
    Inscription : Février 2010
    Messages : 2 180
    Points : 5 072
    Points
    5 072
    Par défaut
    @Raimbow :
    Citation Envoyé par Raimbow
    12Go RAM ça coûte toujours moins chère que deux jours de développement.
    Pour un utilisateur lambda, je ne pense pas

    Sinon, d'accord sur le reste (en me relisant, je suis assez agressif, mes excuses).
    C'est Android, PAS Androïd, ou Androïde didiou !
    Le premier est un OS, le second est la mauvaise orthographe du troisième, un mot français désignant un robot à forme humaine.

    Membre du comité contre la phrase "ça marche PAS" en titre et/ou explication de problème.

    N'oubliez pas de consulter les FAQ Android et les cours et tutoriels Android

  17. #17
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 168
    Points : 140
    Points
    140
    Par défaut
    Dommage qu'il ne soit pas possible d'avoir le code source.
    Je me suis toujours demandé comment on peut codé une telle démo.

  18. #18
    Rédacteur
    Avatar de thierryler
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    4 078
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 078
    Points : 12 815
    Points
    12 815
    Par défaut
    disons 5 jours * 8h * 30€/h = 1200€
    Heu, je dirais plutôt 5 x 600€ = 3000€ lol pour un bon dev, et encore...

    pour ce prix, j'ai un serveur entier, mais ça n’empêche pas de faire attention à trop dépenser non plus, sans forcément tomber dans de l'optimisation.
    Thierry Leriche-Dessirier
    Consultant Java JEE Web Agile freelance
    Rédacteur pour Developpez
    Professeur de Génie Logiciel à l'ESIEA

    Site : http://www.icauda.com / Linked'in : http://www.linkedin.com/in/thierryler / Twitter : @ThierryLeriche

  19. #19
    Membre éprouvé Avatar de Jidefix
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    742
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Septembre 2006
    Messages : 742
    Points : 1 154
    Points
    1 154
    Par défaut
    Je suis d'accord avec le post d'origine. Quand on voit qu'un angry bird ou un tower defense sans le moindre effort d'IA met à genoux un processeur de 1 GHz, on se demande comment on faisait avant!

    Enfin, il faut bien que les constructeurs vivent aussi
    Veuillez agréer nos sentiments les plus distingués. Soyez assurés de notre entière collaboration, bien à vous pour toujours et à jamais dans l'unique but de servir l'espérance de votre satisfaction, dis bonjour à ton père et à ta mère, bonne pétanque, mets ton écharpe fais froid dehors.

  20. #20
    Expert confirmé
    Avatar de GLDavid
    Homme Profil pro
    Service Delivery Manager
    Inscrit en
    Janvier 2003
    Messages
    2 852
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Service Delivery Manager
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 852
    Points : 4 759
    Points
    4 759
    Par défaut
    Citation Envoyé par ManusDei Voir le message
    Si tu avais 500Mo disponibles, et que tu as passé X heures à optimiser ton code pour prendre uniquement 5Mo, effectivement, quel intérêt ? (en dehors de l'intérêt académique)

    Ensuite si tu prévoyais de faire tourner ça sur un FPGA à terme, là l'intérêt est tout à fait compréhensible
    Disons que je consomme 5Mo pour un projet à exporter. Maintenant, j'ai plus de 40 projet à exporter. Tu avoueras que ne consommer que 5Mo par projet, c'est quand même bien plus profitable sur un serveur qui doit déjà gérer d'autres applications. Si en plus, l'export dure moins de 10 minutes (interrogations de bases de données, organisations des données, checks, écriture), moins je consomme et mieux je me porte (ouais, ça se voit que je fais un régime ?)

    En terme de temps, ce programme a été fait en 1j/homme.

    @++
    GLDavid
    Consultez la FAQ Perl ainsi que mes cours de Perl.
    N'oubliez pas les balises code ni le tag

    Je ne répond à aucune question technique par MP.

Discussions similaires

  1. Réponses: 1
    Dernier message: 26/03/2008, 21h39
  2. Réponses: 6
    Dernier message: 05/02/2007, 20h49
  3. Comment fait-on pour insérer une date dans un champs DateTime
    Par gibea00 dans le forum Accès aux données
    Réponses: 1
    Dernier message: 14/01/2007, 01h04
  4. Réponses: 14
    Dernier message: 04/01/2007, 22h35

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