it-swarm.com.de

Ist Python schneller und leichter als C ++?

Ich habe immer gedacht, dass die Vorteile von Python die Lesbarkeit des Codes und die Entwicklungsgeschwindigkeit sind, aber Zeit und Speichernutzung waren nicht so gut wie die von C++.

Diese Statistik hat mich sehr beeindruckt.

Was sagt Ihnen Ihre Erfahrung über Python vs. C++ - Zeit und Speichernutzung?

83
Alex

Ich denke, Sie lesen diese Statistiken falsch. Sie zeigen, dass Python bis zu 400-mal langsamer ist als C++, und mit Ausnahme eines Einzelfalls ist Python eher ein Gedächtnisschwein. Wenn es um die Quellgröße geht, gewinnt Python auf Anhieb.

Meine Erfahrungen mit Python zeigen den gleichen eindeutigen Trend, dass Python in der Größenordnung von 10 bis 100-mal langsamer ist als C++, wenn es um das Zerquetschen von Zahlen geht. Dafür gibt es viele Gründe, die wichtigsten sind: a) Python wird interpretiert, während C++ kompiliert wird; b) Python hat keine Grundelemente, alles, einschließlich der eingebauten Typen (int, float usw.), sind Objekte. c) Eine Python -Liste kann Objekte unterschiedlichen Typs enthalten, sodass jeder Eintrag zusätzliche Daten zu seinem Typ speichern muss. Dies alles beeinträchtigt die Laufzeit und den Speicherverbrauch erheblich.

Dies ist jedoch kein Grund, Python zu ignorieren. Eine Menge Software benötigt trotz des 100-Zeit-Langsamkeitsfaktors nicht viel Zeit oder Speicher. Bei den Entwicklungskosten gewinnt Python mit dem einfachen und prägnanten Stil. Diese Verbesserung der Entwicklungskosten überwiegt häufig die Kosten für zusätzliche CPU- und Speicherressourcen. Wenn dies jedoch nicht der Fall ist, gewinnt C++.

208
marcog

Alle langsamsten (> 100x) Verwendungen von Python auf dem Shootout sind wissenschaftliche Operationen, die eine hohe GFlop/s-Anzahl erfordern. Sie sollten python auf keinen Fall verwenden Die korrekte Verwendung von python besteht darin, ein Modul zu importieren, das diese Berechnungen ausführt, und dann einen entspannten Nachmittag mit Ihrer Familie zu verbringen. That ist die pythonische Methode: )

121
Tim Lin

Meine Erfahrung entspricht den Benchmarks. Python kann langsam sein und benötigt mehr Speicher. Ich schreibe viel, viel weniger Code und es funktioniert das erste Mal mit viel weniger Debugging. Da es den Speicher für mich verwaltet, muss ich nicht tun Jegliche Speicherverwaltung spart Stunden beim Aufspüren von Kernlecks.

Was ist deine Frage?

25
S.Lott

Die Quellgröße ist nicht wirklich eine sinnvolle Sache zu messen. Zum Beispiel das folgende Shell-Skript:

cat foobar

ist viel kürzer als seine Python oder C++ - Entsprechungen.

14
anon

Auch: Psyco vs. C++ .

Es ist immer noch ein schlechter Vergleich, da sich niemand auf die numerisch knackigen Dinge konzentrieren würde, auf die sich die Benchmarks in reinem Python=) konzentrieren Machen Sie sich ein Bild davon, ob Ihr Programm merklich langsamer sein wird.

6
millimoose

Das Problem hier ist, dass Sie zwei verschiedene Sprachen haben, die zwei verschiedene Probleme lösen ... es ist wie das Vergleichen von C++ mit Assembler.

Python ist für die schnelle Anwendungsentwicklung und für den Fall gedacht, dass die Leistung nur ein minimales Problem darstellt.

C++ ist nicht für eine schnelle Anwendungsentwicklung und erbt ein Vermächtnis der Geschwindigkeit von C - für eine Programmierung auf niedriger Ebene.

3
jheriko

Ich denke, diese Statistiken zeigen, dass Python ist viel langsamer und verwendet mehr Speicher für diese Benchmarks - sind Sie sicher, dass Sie sie richtig lesen?

Nach meiner Erfahrung, die hauptsächlich mit dem Schreiben von netzwerk- und dateisystemgebundenen Programmen in Python zu tun hat, ist Python in keiner Weise wesentlich langsamer. Für diese Art von Arbeit sind die Vorteile von Bedeutung die Kosten überwiegen.

2
RichieHindle

Es ist das gleiche Problem mit verwalteten und einfach zu verwendenden Programmiersprachen wie immer - sie sind langsam (und manchmal speicherfressend).

Dies sind Sprachen, die gesteuert und nicht verarbeitet werden sollen. Wenn ich eine Anwendung schreiben müsste, um Bilder zu transformieren, und auch Python verwenden müsste, könnte die gesamte Verarbeitung in C++ geschrieben und über Bindungen mit Python während der Schnittstelle verbunden werden und Prozesskontrolle wäre definitiv Python.

2
Migol