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

Algorithmes et structures de données Discussion :

Une étude compare différents langages pour le calcul intensif


Sujet :

Algorithmes et structures de données

  1. #21
    Membre éprouvé

    Homme Profil pro
    Ingénieur logiciel embarqué
    Inscrit en
    Juillet 2002
    Messages
    386
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur logiciel embarqué
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2002
    Messages : 386
    Points : 1 164
    Points
    1 164
    Par défaut
    Il y a un bout de temps j'avais fait un petit comparatif perso basé sur une résolution de sodoku en brute force.Cela pour me faire une idée (pas pour lancer un troll web ^^) entre java/C++/asm x86 , je ne l'ai jamais publié je l'ai juste partager avec des connaissances qui m'en ont fait la demande, car je trouvais ce comparatif a peine suffisent pour se faire une idée. Quant je vois ce que l'on trouve actuellement sur la toile, finalement mon comparatif était presque scientifique

    A mon humble avis si l'on veut comparer 2 langages on doit le faire sur un critère donné (vitesse d'exécution, empreinte mémoire, temps de développement, efficacité de déploiement, ...) et une équipe d'experts dans chacun des langages. Si l'on mélanges plusieurs critères les résultats sont tous sauf pertinent. On peu ajouter pleins d'autres critères, parfois même subjectifs, mais on se retrouve face a une réalité : le résultats dépend toujours en partie de l'équipe d'experts

  2. #22
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Sekigo Voir le message
    L'exemple en python est assez éloquent.
    Le code de base, un script impératif de base, sans fonction, est ~200x plus lent que le code en C. En factorisant un poil (on déplace 10 lignes de code de la boucle principale pour les mettre dans une fonction, on déclare la fonction et on ajoute un décorateur), on arrive à un facteur 1.57x plus lent que le code en C. C'est complètement absurde.
    En utilisant un poil les fonctionnalités/écosystème du langage, on arrive à des résultats qui n'ont plus rien à voir.
    Croyez-moi c'est réaliste, j'ai travaillé avec un économètre qui codait en python , ce genre "d’optimisation" il n'y aurait JAMAIS pensé

  3. #23
    Rédacteur

    Avatar de Davidbrcz
    Homme Profil pro
    Ing Supaéro - Doctorant ONERA
    Inscrit en
    Juin 2006
    Messages
    2 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ing Supaéro - Doctorant ONERA

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 307
    Points : 4 732
    Points
    4 732
    Par défaut
    Citation Envoyé par Sekigo Voir le message
    Non, parce que je suis développeur :


    En gros, la cible est le jeune économiste tout droit sortis de l'école, ou le chercheur pas très doué avec la programmation. Rien de honteux, on ne peux pas masteriser dans tous les domaines. Et avec cette cible en tête, l'étude semble beaucoup moins absurde, on veut le langage avec les meilleurs perfs avec du code pas forcément idiomatique.
    Mais sur developpez.com, la cible n'est pas le jeune économiste, c'est le développeur. Et donc, venir nous poser ce genre de questions avec ce genre d'études, je trouve ça grotesque.
    Je me permets juste réagir cette intervention.
    Il est vrai que j'ai pas assez (re)contextualise la news, mea culpa.

    Mais il ne faut pas oublier que dans beaucoup d'endroits (recherche entre autre), il y a aussi beaucoup de programmes qui sont pondus par chercheurs - non développeurs.Et que pour eux developpez.com est un peu un phare dans la nuit. Je pense donc que cette étude est pertinente sur ce site.
    "Never use brute force in fighting an exponential." (Andrei Alexandrescu)

    Mes articles dont Conseils divers sur le C++
    Une très bonne doc sur le C++ (en) Why linux is better (fr)

  4. #24
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Points : 12 462
    Points
    12 462
    Par défaut
    M'étonne qu'ils n'ont pas pris le C également
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  5. #25
    Membre extrêmement actif
    Homme Profil pro
    Graphic Programmer
    Inscrit en
    Mars 2006
    Messages
    1 537
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Graphic Programmer
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 537
    Points : 3 909
    Points
    3 909
    Par défaut
    Citation Envoyé par Saverok Voir le message
    Un langage de haut niveau est justement fait pour abstraire la technique non liée à ton algorithme. (ainsi, le développeur peut se concentrer sur les fonctionnalité de son programme et non sur la technicité de son matériel qui le détourne de la raison même pour laquelle il développe)
    Après, je ne dis pas qu'il faut faire n'importe quoi ou que le garbage collector de Java est bien fait, mais là est l'idée.

    Un développeur ne programme pas pour la beauté du geste (ça n'a aucun sens).
    Un développeur programme des fonctionnalités.
    Toute l'intention du développeur se doit d'être concentrée là dessus et les considérations techniques le détournent de cet objectif.
    C'est la raison pour laquelle de plus en plus d'API permettent de faire de la génération de code par des annotations.

    OK, côté perf, le C++ est meilleurs que Java, pas trop de débat là dessus.
    Côté accessibilité, rapidité de développement, lisibilité du code, maintenance et portabilité : Java passe devant
    je suis d'accord avec toi mais je pense qu'il est illusoire de penser que peut importe comment l'on code, le compilateur ou l'interpetreuir soit capable de faire le meilleur code, le moin consommatteur de cycle et de memoire vive.

    Moi je code avant tout pour la perf et j'implemente fonction de ce que le langage me permet et l'utilisation des pointeurs reduit de beaucoup la complexite des implementation sans comtper la rapidité en c++.
    C'est sur que l'implementation sera specifique et pas forcement convertible facilement au java ou au c# ou tout est objet, mais je vais pas laisser a un process automatique, dont je ne controle pas le processus, les optimisations que je peux faire moi meme.

    Si on code extremement reutilisable on peut vouloir utiliser des regles d'implementation basique aisement comprehensible par n'importe qui et laisser de toute facon comme c'est à la mode la sur-puissance des becanes gérer le code non optimisé comme si c'était du code opti sur un 386. par contre si on code du code rapide avec une faible emprunte memoire, alors bien connaitre le langage et la facon dont le compilateur va traiter telle protion de code est obligatoire et forcement moins à la portée, mais au fond, vous c'est quand meme bien que l'implementation soit aussi soignement faite que la conception de l'algo.

    et qui dit langage de haut niveau dans ton example dit langage livré avec framework. et la pardon, charger en memoire le framework alors qu'on a besoin de 4 fonctions c'est une abbération à mon sens. j'aime coder ce que je comprends. et la couche d'abstraction fournie par les framework me pose probleme.

    Non seulment je comprends pas comment il focntionne en interne et au 1er bug venu toute mon implementation tombe en morceau.
    je dis pas qu'il faut tout reccrire, mais a force de ce reposer sur tout un tas de truc ecrit par d'autre sur le seul avantage qu'on n'as quasiment plus qu'a convetir l'algo textuellement est trop cher payé. enfin totu depend de la criticté de l'algo en question pour la focntionnalité voulu.

  6. #26
    Expert confirmé Avatar de DonQuiche
    Inscrit en
    Septembre 2010
    Messages
    2 741
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 2 741
    Points : 5 485
    Points
    5 485
    Par défaut
    Citation Envoyé par cuicui78 Voir le message
    et qui dit langage de haut niveau dans ton example dit langage livré avec framework. et la pardon, charger en memoire le framework alors qu'on a besoin de 4 fonctions c'est une abbération à mon sens.
    Déjà on parle de calcul intensif donc le temps de chargement du framework on s'en cogne un peu. Mais même pour une appli grand public, qu'est-ce qui est le plus important ?
    a) Que le programme démarre 5 ms plus lentement (temps requis par le système pour dupliquer les 20Mo du framework déjà en mémoire) et consomme 0,5% de tes 2Go de mémoire en plus ?
    b) Que le programme soit exact, sans bogues, le moins coûteux à produire et à maintenir ?

    j'aime coder ce que je comprends. et la couche d'abstraction fournie par les framework me pose probleme.
    Que ce soit Java ou Dotnet les sources du framework sont dispos, libre à toi de les étudier. Pour ma part je ne m'en prive pas et je sais dans le détail ce que donne mon code au niveau matériel.

  7. #27
    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
    Cette étude va-t-elle vous faire changer de langage pour vos applications lourdes en calcul ?
    Si le benchmark se base sur un calcul intensif de 1 à 2 secondes...
    Chez moi, c'est le temps pour d’initialiser l'application pour qu'elle toute pendant 24/48H...
    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.

  8. #28
    Expert éminent
    Avatar de Matthieu Vergne
    Homme Profil pro
    Consultant IT, chercheur IA indépendant
    Inscrit en
    Novembre 2011
    Messages
    2 261
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant IT, chercheur IA indépendant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2011
    Messages : 2 261
    Points : 7 748
    Points
    7 748
    Billets dans le blog
    3
    Par défaut
    De mon point de vue, étude sans réel objectif à part alimenter les trolls. On choisit un langage sur différents critères, ce qui inclut les compétences disponibles dans le langage en question, et donc la possibilité d'avoir quelque chose d'optimisé. Comparer des performances sans exploiter des propriétés qui sont spécifiques au langage, c'est prendre une perspective générique qui n'arrive pas en pratique. Donc on se limite à du trollage général.

    - Je sais faire une multiplication de tête plus rapidement que mon grand-frère ou ma petite soeur.
    - Et ?
    - Et ben je suis meilleur qu'eux !
    - Ouais, super. Et donc je choisis qui pour remplir ma feuille de paie ?
    - Excel.
    Site perso
    Recommandations pour débattre sainement

    Références récurrentes :
    The Cambridge Handbook of Expertise and Expert Performance
    L’Art d’avoir toujours raison (ou ce qu'il faut éviter pour pas que je vous saute à la gorge {^_^})

  9. #29
    Membre à l'essai
    Inscrit en
    Octobre 2009
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 11
    Points : 12
    Points
    12
    Par défaut
    J'aurais bien aimé voir le C# dans la liste des langages testés...

  10. #30
    Candidat au Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Octobre 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

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

    Informations forums :
    Inscription : Octobre 2012
    Messages : 7
    Points : 2
    Points
    2
    Par défaut Soyons plus souples
    Oui C++ est plus rapide que Java tout comme C lui est plus rapide que C++ tout comme assembleur est largement plus rapide que tous ces langages . ET PUIS QUOI ENCORE ??????
    Mes premiers pas c'était Pascal et Assembleur oui. Et je continue de déplorer le coté "style bidouilleur de C" J'aurai aimé qu'il soit rigoureux comme Pascal. je vous assure L'école pascalienne c'est du béton armé. Mais voyons le bon coté des choses. C a changé le monde de l'informatique, C++ et Java ont contribué à sa révolution Ada aussi a joué son grand rôle. Delà sont nés PHP, JS, Python, Perl, ... Et grace à ces derniers nous avons des milliards de sites, des millions de logiciels gratuits mais malheureusement l'évolution a un prix et le prix c'est qu'on se retrouve avec beaucoup de bricoleurs et très peu de vrais spécialistes.
    On manque de compétences pour fabriquer un vrai programme java alors on télécharge un PDF sur le web on l'applique aveuglement et on produit UNE MERDE... NOTRE MERDE RAME ALORS ON ACCUSE JAVA
    JAVA EST UN LANGAGE DE PROGRAMMATION ORIENTE OBJET CE SEUL STATUT EN FAIT UN OUTIL DELICAT ET NÉCESSITE UN CERTAIN COUT EN TEMPS D’EXÉCUTION JE SUIS DONC DÉSOLÉ SI VOUS VOULEZ UN LANGAGE "TRÈS RAPIDE " N'UTILISEZ PAS LA POO DONC MÊME PAS C++. ASSEMBLEUR c'est le roi en matière de vitesse, pascal son frère direct, C leur petit frère avec eux ça va courir même si votre programme est mal fichu . Mais Java requière de la rigueur, des compétences et des connaissances solides pour pouvoir faire des choses bien pas forcement rapides comme avec C mais forcement plus riche et plus facilement analysables dont facilitant le travail d'équipe et dont adapté pour des projets énormes. Pourtant la grande majorité des développeurs java ne savent même pas ce qu'est Java ils confondent la machine virtuel et le langage, simplicité d'écriture du code et complexité du concept, ils utilisent la POO sans vraiment l'utiliser . Créer des interfaces graphiques avec du drag and drop c'est malheureusement très couteux en gain d’exécution eihn "les IDE...ISSIENS" rentrez donc en mode commande et apprenez à vous servir de "SwingUtilities, de EventQue, System.gc() ça vous dit quelque chose, java.util.BitSet" bref java c'est pas seulement ActionListener, c'est aussi les décalages binaires, les opérateurs binaires, les symboles de Jacobi avez vous comparer l'Api des Random du C et celle de java ???? Je ne crois pas mais si vous vous êtes pliés sur le sujet vous comprendrez que les symboles de Jacobi sont plus rapides que LES GENERATEURS CONGRUENTIELS LINEAIRES. Bref Java peut aussi être rapide tout dépend du programme et du programmeur.
    Les grands programmeurs associent richesse et rapidité. Dans bien des grands projets on laisse les géants du calcul calculer et les maîtres de l'interactivité pour le réseau, et le GUI etc . Allez voir chez Matlab par exemple. Nos étudiants ont commis l'erreur des profanes peut être pour des raisons ... je m'attendais à ce qu'ils comparent Matlab et R par example et non Matlab et C++, Java .. car C++, Java sont des langages de programmation dans le sens strict du terme alors que Matlab est un logiciel de calcul numérique développé en C et java quoi qu'on dise ce n'est pas un langage de programmation.

    Ne nous comportons pas comme les églises qui se font des guerres inutiles.
    En informatique Chacun a sa place et que le meilleur survive

  11. #31
    Membre habitué
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2008
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2008
    Messages : 164
    Points : 154
    Points
    154
    Par défaut
    Il serait peut-être plus intéressant d'avoir une étude permettant de classer les langages par rapport à leur utilité

Discussions similaires

  1. Réponses: 29
    Dernier message: 27/12/2016, 13h28
  2. Réponses: 0
    Dernier message: 06/06/2011, 13h47
  3. Meilleur langage pour une erlation bdd
    Par Captain_JS dans le forum Décisions SGBD
    Réponses: 1
    Dernier message: 15/03/2005, 14h44
  4. Quel langage pour envoyer un fichier sur une adresse
    Par dai.kaioh dans le forum Développement
    Réponses: 2
    Dernier message: 02/04/2004, 17h38

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