Frage

Ich habe immer gedacht, dass Pythons Vorteile Code Lesbarkeit und Entwicklungsgeschwindigkeit sind, aber die Zeit und Speichernutzung war nicht so gut wie die von C ++.

Diese Statistiken mir auffiel, wirklich hart.

Wie sieht Ihre Erfahrung sagen, Sie über Python vs C ++ Zeit und Speichernutzung?

War es hilfreich?

Lösung

Ich glaube, Sie falsch, diese Statistiken sind zu lesen. Sie zeigen, dass Python bis zu etwa 400-mal langsamer als C ++ und mit Ausnahme eines einzigen Falles, Python eher einen Speicher Schwein ist. Wenn es aber zu Quellgröße kommt, Python gewinnt flach aus.

Meine Erfahrungen mit Python zeigen den gleichen eindeutigen Trend, den Python in der Größenordnung ist zwischen 10 und 100-mal langsamer als C ++, wenn Knirschen jeder ernsthafte Zahl zu tun. Es gibt viele Gründe dafür, die wichtigsten sind sein: a) Python interpretiert wird, während C ++ kompiliert wird; b) Python hat keine Primitiven, alles einschließlich der eingebauten Typen (int, float, etc.) sind Objekte; c) eine Liste Python können Objekte verschiedener Art halten, so dass jeder Eintrag hat zusätzliche Daten über seinen Typ zu speichern. Diese alle stark behindern sowohl Laufzeit und Speicherverbrauch.

Das ist kein Grund, obwohl Python zu ignorieren. Viele Software erfordert nicht viel Zeit oder Speicher sogar mit der Langsamkeit Faktor 100 Mal. Entwicklungskosten sind, wo Python gewinnt mit dem einfachen und prägnanten Stil. Diese Verbesserung bei der Entwicklung kosten oft schwerer wiegt als die Kosten für zusätzliche CPU- und Speicherressourcen. Wenn dies nicht der Fall, aber dann C ++ gewinnt.

Andere Tipps

das langsamste (> 100-fach) Verwendungen von Python auf der Schießerei sind wissenschaftliche Operationen, die hohe GFlop erfordern / s zu zählen. Sie sollten nicht sowieso Python für diejenigen verwenden. Der richtige Weg, um Python zu verwenden, ist es, ein Modul zu importieren, die diese Berechnungen tun, und dann einen entspannten Nachmittag mit Ihrer Familie gehen. Das ist der pythonic Weg:)

Meine Erfahrung ist das gleiche wie das Benchmarks. Python kann langsam sein und mehr Speicher verwendet. Ich schreibe viel, viel weniger Code und es funktioniert das erste Mal mit viel weniger Debugging. Da es Speicher für mich schafft, muss ich jede Speicherverwaltung nicht tun, Stunden der Jagd nach Kern Lecks zu speichern.

Was ist Ihre Frage?

Quelle Größe ist nicht wirklich eine vernünftige Sache zu messen. Zum Beispiel kann der folgende Shell-Skript:

cat foobar

viel kürzer ist als entweder sein Python oder C ++ Äquivalente.

Auch: Psyco vs. C ++ .

Es ist immer noch ein schlechter Vergleich, da niemand des numbercrunchy Sachen Benchmarks tun würde, ist in der Regel ohnehin in reinem Python zu konzentrieren. Ein besser würde man die Leistung von realistischen Anwendungen werden zu vergleichen, oder C ++ im Vergleich zu NumPy, um eine Idee zu bekommen, ob Ihr Programm merklich langsamer sein wird.

Das Problem hier ist, dass man zwei verschiedene Sprachen hat, die zwei unterschiedliche Probleme zu lösen ... sein wie der Vergleich C ++ mit Assembler.

Python ist für die schnelle Anwendungsentwicklung und für, wenn die Leistung ist eine minimale Sorge.

C ++ ist nicht für schnelle Anwendungsentwicklung und erbt ein Vermächtnis der Geschwindigkeit von C -. Low-Level-Programmierung

Ich denke, diese Statistiken zeigen, dass Python viel langsamer ist und mehr Speicher für den Benchmarks verwendet - sind Sie sicher, dass Sie ihnen den richtigen Weg nach oben gerade lesen

?

Nach meiner Erfahrung, die meist mit Schreiben netz- und dateisystemgebundene Programme in Python, ist Python nicht wesentlich langsamer in irgendeiner Art und Weise, was zählt. Für diese Art von Arbeit, überwiegen die Vorteile die Kosten.

Es ist das gleiche Problem mit verwalteten und einfachen Programmiersprache wie immer zu verwenden, -. Sie sind langsam (und manchmal Speicher-Essen)

Dies sind Sprachen Kontrolle zu tun, anstatt Verarbeitung. Wenn ich habe Anwendung schreiben Bilder zu transformieren und hatte Python zu verwenden, auch alle könnte die Verarbeitung in C ++ geschrieben werden und mit Python über Bindungen während Schnittstelle und Prozesssteuerung würden auf jeden Fall Python sein.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top