Question

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 de C ++.

Ces statistiques m'ont beaucoup frappé.

Que votre expérience vous a-t-elle appris sur l'utilisation du temps et de la mémoire entre Python et C ++?

Était-ce utile?

La solution

Je pense que vous avez mal lu ces statistiques. Ils montrent que Python est environ 400 fois plus lent que C ++ et que, à 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 à plein régime.

Mes expériences avec Python montrent la même tendance certaine: Python est environ 10 à 100 fois plus lent que le C ++ lorsqu’il s’agit de faire des calculs sérieux. Il y a plusieurs 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 pouvant contenir des objets de types différents, chaque entrée doit stocker des données supplémentaires sur son type. Tous ces éléments entravent considérablement la consommation d’exécution et la quantité de mémoire utilisée.

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.

Autres conseils

Toutes les utilisations les plus lentes (> 100x) de Python en fusillade sont des opérations scientifiques qui nécessitent un nombre élevé de GFlop / s. Vous ne devriez PAS utiliser python pour ceux-là de toute façon. La bonne façon d’utiliser Python consiste à importer un module qui effectue ces calculs, puis à passer un après-midi de détente en famille. Cela est la méthode pythonique suivante:)

Mon expérience est la même que celle des points de repère. 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 à gérer de mémoire, ce qui évite des heures de recherche des fuites principales.

Quelle est votre question?

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

cat foobar

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

Voir aussi: Psyco contre C ++ .

C’est quand même une mauvaise comparaison, car personne ne voudrait faire les tests trop compliqués qui ont tendance à se concentrer de toute façon sur du Python pur. Une meilleure solution consisterait à comparer les performances d'applications réalistes, ou C ++ à NumPy, pour avoir une idée du rythme de votre programme.

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

Python est destiné au développement rapide d’applications et aux situations où les performances sont négligeables.

C ++ n’est pas pour le développement rapide d’applications et hérite d’un héritage de rapidité du C - pour la programmation de bas niveau.

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 correctement?

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

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 alors que le contrôle de l’interface et du processus serait définitivement Python.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top