web-dev-qa-db-fra.com

Python vs Java (vitesse d'exécution))

Duplicate possible:
est python plus lent que Java/C #?

En ignorant toutes les caractéristiques de chaque langue et en se concentrant SEULEMENT sur la vitesse, quelle langue est la meilleure en termes de performances?

On pourrait penser que ce serait une question assez simple à laquelle répondre, mais je n’en ai pas trouvé de bonne.

Je suis conscient que certains types d'opérations peuvent être plus rapides avec python et inversement, mais je ne trouve aucune information détaillée à ce sujet. Quelqu'un peut-il nous éclairer sur les différences de performances?

48
Bijan

Java est plus rapide que Python. Facilement.

Python est favorable à beaucoup de choses; la vitesse n'en fait pas nécessairement partie.

Les références

80
polygenelubricants

Si vous ignorez les caractéristiques des deux langues, comment définissez-vous "SPEED"? Quelles caractéristiques devraient figurer dans votre repère et lesquelles voulez-vous omettre?

Par exemple:

  • Est-ce que cela compte lorsque Java exécute une boucle vide plus rapidement que Python?
  • Ou bien Python est-il plus rapide lorsqu'il constate que le corps de la boucle est vide, que l'en-tête de la boucle n'a pas d'effet secondaire et qu'il optimise toute la boucle?
  • Ou est-ce "une caractéristique de la langue"?
  • Voulez-vous savoir combien de bytecodes chaque langue peut exécuter par seconde?
  • Lesquels? Seuls les rapides ou tous?
  • Comment comptez-vous le Java VM) compilateur JIT qui transforme le bytecode en code assembleur spécifique à la CPU lors de l'exécution?
  • Incluez-vous les temps de compilation du code (qui sont extra dans Java mais toujours inclus dans Python)?

Conclusion: Votre question n'a pas de réponse car elle ne définit pas ce que vous voulez. Même si vous l'avez expliqué plus clairement, la question deviendra probablement théorique, car vous mesurerez quelque chose qui ne compte pas dans la vie réelle. Pour tous mes projets, les deux Java et Python ont toujours été assez rapides. Bien sûr, je préférerais une langue à une autre pour un problème spécifique dans un certain contexte.

34
Aaron Digulla

Il n'y a pas de bonne réponse car Python et Java sont deux spécifications pour lesquelles il existe de nombreuses implémentations différentes. Par exemple, CPython, IronPython, Jython et PyPy sont quelques-unes des implémentations de Python). Pour Java, il existe la machine virtuelle HotSpot, Mac OS X Java VM, OpenJRE, etc.). Jython génère = Java, et il utiliserait donc plus ou moins le même Java sous-jacent. CPython implémente une poignée de choses directement en C, donc c'est très rapide, mais encore Java implémentent également de nombreuses fonctions en C. Vous auriez probablement à effectuer des mesures fonction par fonction et à travers une variété d’interprètes et de machines virtuelles pour pouvoir faire toute déclaration raisonnable.

13

Différentes langues font différentes choses avec différents niveaux d'efficacité.

The Benchmarks Game a tout un tas de problèmes de programmation mis en œuvre dans de nombreux langages différents.

9
Oli