Partage
  • Partager sur Facebook
  • Partager sur Twitter

Python vs Java

Python vs Java

    9 décembre 2015 à 11:51:34

    Bonjour à tous,

    Je ne connais pas totalement le niveau des personnes, mais j'ai besoin d'une réponse de très bonne qualité :D.

    N'ayant jamais vraiment fait de test de benchmark entre les deux, et n'ayant jamais vraiment étudié leur performance, j'aimerai savoir lequel de Python ou Java est le plus performant. 

    Je me doute que Java est surement plus rapide mais pourtant il est bien plus lourd ?

    Pour vous expliquer, j'ai besoin de faire une application de pointe. Je dois créer un moteur d'acquisition de données. Pour ça je vais me baser sur la techno "Apache Storm" qui est un système de calcul distribué. J'ai besoin d'un temps d'excécution très court avec un temps de réponse très très petit afin de faire du "temps réel". Du coup je me demandais lequel de Java ou Python serait le plus approprié pour mon moteur.

    Je risque de faire des tests de charge de toute manière sur un exemple simple avec les 2 langages, mais j'aurais aimé avoir quelques avis de pro s'il y en a. 

    Merci d'avance

    • Partager sur Facebook
    • Partager sur Twitter
      9 décembre 2015 à 14:50:26

      Lu'!

      Généralement quand on voit des choses comme "pointe", "moteur", "temps réel" et "performances" dans un énoncé de besoin, c'est plutôt vers les langages qui offrent un niveau de contrôle extrême qu'on va se tourner, C++ ou C typiquement. Non pas qu'il ne soit pas possible d'écrire des programmes rapides en Java ou Python mais simplement parce que la marge d'optimisation va s'amenuiser plus vite, notamment en ce qui concerne la forme des données en mémoire, ce qui est le problème numéro 1.

      En ce qui me concerne dans un cas pareil, j'écrirai le premier prototype en Python, identification des pertes de vitesses, amélioration des algorithmes et des structures de données de haut niveau. Puis identification des endroits où c'est lent avec remplacement progressif par du code natif en C++.

      • Partager sur Facebook
      • Partager sur Twitter

      Posez vos questions ou discutez informatique, sur le Discord NaN | Tuto : Preuve de programmes C

        9 décembre 2015 à 14:55:04

        J'suis ok pour le C ou C++, hors je ne peux pas dû à d'autres contraintes techniques. J'ai réellement le choix entre Java et Python.

        Je prends note de ton avis. Par contre en parcourant Google, je tombe souvent sur des sujets disant que Java est tout de même nettement plus rapide que Python, est ce vrai du coup ?

        • Partager sur Facebook
        • Partager sur Twitter
          9 décembre 2015 à 14:57:47

          Il faudrait avoir des benchs très précis. Parce que Python a des atouts très importants dans sa manche : Cython et la palanquée pas possible de bibliothèque natives qu'on peut binder vers Python.

          Python VS Java, en mode vanilla sans accès à des bibliothèques, je donne effectivement Java vainqueur.

          • Partager sur Facebook
          • Partager sur Twitter

          Posez vos questions ou discutez informatique, sur le Discord NaN | Tuto : Preuve de programmes C

            9 décembre 2015 à 16:16:12

            D'accord, merci. J'espère que d'autres viendront donner leur avis.
            • Partager sur Facebook
            • Partager sur Twitter
              9 décembre 2015 à 22:21:38

              Hello, tu trouveras sur ce site quelques réponses: http://benchmarksgame.alioth.debian.org/u64q/python.html attention tout de même car ce sont des algos assez commun dans l'apprentissage d'un langage mais beaucoup commun dans la pratique. Autre chose, ce sont des mesures faites avec python 3

              autre ordre d'idée sur java versus C: http://benchmarksgame.alioth.debian.org/u64q/java.html (perso je pensais pas que ce serait aussi "proche" dans les temps) En effet la jvm rend java plus lourd que python au runtime mais c'est aussi ce qui permet à ton application d'être plus rapide.

              Autre données a prendre en compte sur le benchmark, la personne est pas forcément à l'aise avec tous les programmes et peut oublier des éléments de langage qui rendrait le programme plus performant.

              -
              Edité par timoun 9 décembre 2015 à 22:24:27

              • Partager sur Facebook
              • Partager sur Twitter
                9 décembre 2015 à 23:08:06

                Je vais venir troller dans cette discussion qui m'a l'air intéressante :-)

                • "Application de pointe" : Désolé, mais ça ne veut rien dire. Un bon vieux navigateur web c'est probablement une application considérablement plus complexe et "de pointe" que ce que tu vas réaliser.
                • Le fameux "temps réel" : quand on parle de temps réel en programmation, ça n'est probablement pas ce que tu t'apprêtes à faire. De façon générale, une application temps réel, c'est une application dont le temps de réponse est déterministe, ou dont le temps de réponse max est connu de façon certaine. Ca ne veut pas forcément dire que c'est très "rapide".

                Pour moi la principale contrainte dans ton besoin c'est le fait d'utiliser Storm, qui est quand même une éco-système basé sur la JVM (avec de beaux morceaux de Clojure dedans). Tu as Streamparse (https://github.com/Parsely/streamparse) qui te permet de faciliter l'utilisation de Python avec Storm.

                • Partager sur Facebook
                • Partager sur Twitter
                  10 décembre 2015 à 9:59:29

                  Merci @timoun pour ces indications. J'avais déjà vu ces résultats de bench mais j'avoue avoir du mal à les interpreter comme ça.

                  -
                  Edité par Kraguesh 10 décembre 2015 à 10:12:30

                  • Partager sur Facebook
                  • Partager sur Twitter

                  Python vs Java

                  × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                  × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                  • Editeur
                  • Markdown