98 votes

Python est-il plus rapide et plus léger que le C++ ?

J'ai toujours pensé que les avantages de Python sont la lisibilité du code et la vitesse de développement, mais que le temps et l'utilisation de la mémoire n'étaient pas aussi bons que ceux du C++.

Ces statistiques m'a frappé très fort.

Que vous dit votre expérience sur le temps et la mémoire utilisés par Python par rapport à C++ ?

269voto

marcog Points 39356

Je pense que vous lisez ces statistiques de manière incorrecte. Ils montrent que Python est jusqu'à environ 400 fois plus lent que C++ et, à l'exception d'un seul cas, Python est plus gourmand en mémoire. Cependant, lorsqu'il s'agit de la taille des sources, Python l'emporte haut la main.

Mes expériences avec Python montrent la même tendance définitive : Python est de l'ordre de 10 à 100 fois plus lent que C++ lorsqu'on effectue des calculs sérieux. Il y a de nombreuses raisons à cela, les principales étant : a) Python est interprété, alors que C++ est compilé ; b) Python n'a pas de primitives, tout, y compris les types intégrés (int, float, etc.) sont des objets ; c) une liste Python peut contenir des objets de différents types, donc chaque entrée doit stocker des données supplémentaires sur son type. Tous ces éléments nuisent gravement à la durée d'exécution et à la consommation de mémoire.

Ce n'est cependant pas une raison pour ignorer Python. Beaucoup de logiciels ne nécessitent pas beaucoup de temps ou de mémoire, même avec le facteur de lenteur de 100 temps. C'est au niveau des coûts de développement que Python l'emporte grâce à son style simple et concis. Cette amélioration du coût de développement est souvent plus importante que le coût des ressources supplémentaires en processeur et en mémoire. Toutefois, lorsque ce n'est pas le cas, c'est le C++ qui l'emporte.

142voto

Tim Lin Points 681

Toutes les utilisations les plus lentes (>100x) de Python lors de la compétition sont des opérations scientifiques qui nécessitent un nombre élevé de GFlop/s. Vous ne devriez PAS utiliser Python pour ces opérations de toute façon. La bonne façon d'utiliser Python est d'importer un module qui effectue ces calculs, puis de passer un après-midi tranquille avec votre famille. Ce est la voie pythique :)

27voto

S.Lott Points 207588

Mon expérience est la même que celle des benchmarks. Python peut être lent et utilise plus de mémoire. J'écris beaucoup, beaucoup moins de code et il fonctionne du premier coup avec beaucoup moins de débogage. Puisqu'il gère la mémoire pour moi, je n'ai pas besoin de la gérer, ce qui me permet d'économiser des heures de recherche de fuites.

Quelle est votre question ?

15voto

La taille de la source n'est pas vraiment une chose raisonnable à mesurer. Par exemple, le shell script suivant :

cat foobar

est beaucoup plus courte que ses équivalents Python ou C++.

8voto

millimoose Points 22665

Aussi : Psyco vs. C++ .

C'est toujours une mauvaise comparaison, puisque personne ne ferait les choses difficiles en chiffres sur lesquelles les benchmarks ont tendance à se concentrer en Python pur. Une meilleure comparaison consisterait à comparer les performances d'applications réalistes, ou de C++ par rapport à NumPy, pour savoir si votre programme sera sensiblement plus lent.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X