web-dev-qa-db-fra.com

Est-ce que Python est plus rapide et plus léger que C ++?

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

Ces statistiques m'a frappé vraiment fort.

Que vous dit votre expérience sur Python vs l'utilisation du temps et de la mémoire C++?)

83
Alex

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 davantage un bourreau de mémoire. Cependant, en ce qui concerne la taille de la source, Python gagne à corps perdu.

Mes expériences avec Python montrent la même tendance que Python est de l'ordre de 10 à 100 fois plus lente que le C++ lors de la compression des chiffres. Il y a plusieurs raisons à cela, les principales étant: a) Python est interprété, tandis 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 types différents, chaque entrée doit donc stocker des données supplémentaires sur son type. Tous ces éléments entravent considérablement la consommation d’exécution et de mémoire.

Ce n'est pas une raison pour ignorer Python. Un grand nombre de logiciels ne nécessite pas beaucoup de temps ou de mémoire, même avec le facteur de lenteur de 100 fois. Le coût de développement est celui où Python gagne avec un style simple et concis. Cette amélioration des coûts de développement est souvent supérieure au coût des ressources de calcul et de mémoire supplémentaires. Cependant, quand ce n'est pas le cas, C++ l'emporte.

208
marcog

Toutes les utilisations les plus lentes (> 100x) de Python sur la fusillade sont des opérations scientifiques qui nécessitent un nombre élevé de GFlop/s. Vous ne devez PAS utiliser python pour celles de toute façon La bonne façon d'utiliser python est d'importer un module qui effectue ces calculs, puis d'aller passer un après-midi de détente avec votre famille. That est le moyen utilisé par Pythonic: )

121
Tim Lin

Mon expérience est la même que celle des repères. Python peut être lent et utilise plus de mémoire. J'écris beaucoup, beaucoup moins de code et cela fonctionne la première fois avec beaucoup moins de débogage. Puisqu'il gère la mémoire pour moi, je n'ai pas à le faire toute gestion de la mémoire, évitant des heures de traque aux fuites fondamentales.

Quelle est votre question?

25
S.Lott

La taille de la source n’est pas vraiment une chose sensée à mesurer. Par exemple, le script Shell suivant:

cat foobar

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

14
anon

Aussi: Psyco vs. C++ .

C’est quand même une mauvaise comparaison, car personne ne ferait les tests de numérotation compliqués ont tendance à se concentrer de manière pure Python). Une meilleure solution serait de comparer les performances d’applications réalistes, ou C++ par rapport à NumPy, à avoir une idée si votre programme sera sensiblement plus lent.

6
millimoose

Le problème ici est que vous avez deux langages différents qui résolvent deux problèmes différents ... c'est comme comparer le C++ à l'assembleur.

Python est destiné au développement rapide d’applications et aux situations où les performances sont une préoccupation minime.

C++ est pas pour le développement rapide d'applications et hérite d'un héritage de vitesse de C - pour la programmation de bas niveau.

3
jheriko

Je pense que ces statistiques montrent que Python est beaucoup plus lent et utilise plus de mémoire pour ces tests - êtes-vous sûr de les lire dans le bon sens?

D'après mon expérience, qui consiste principalement à écrire des programmes liés au système de fichiers et au réseau en Python, Python n'est pas beaucoup plus lent en aucune manière ce qui compte. Pour ce type de travail, ses avantages dépassent ses coûts.

2
RichieHindle

C'est le même problème avec les langages de programmation gérés et faciles à utiliser, comme toujours - ils sont lents (et mangent parfois beaucoup de mémoire).

Ce sont des langues à contrôler plutôt qu'à traiter. Si je devais écrire une application pour transformer des images et utiliser Python aussi tout le traitement pourrait être écrit en C++ et connecté à Python via des liaisons pendant l'interface et le contrôle du processus serait définitivement Python.

2
Migol