Aber gibt es technische Einschränkungen oder Sprachfunktionen, die verhindern, dass mein Python-Skript so schnell ist wie ein gleichwertiges C ++ - Programm?
Nein. Es ist nur eine Frage des Geldes und der Ressourcen, die in die schnelle Ausführung von C ++ fließen, im Vergleich zu Geld und Ressourcen, die in die schnelle Ausführung von Python fließen.
Als beispielsweise die Self VM herauskam, war sie nicht nur die schnellste dynamische OO-Sprache, sondern auch die schnellste OO-Sprachperiode. Obwohl es sich um eine unglaublich dynamische Sprache handelt (viel mehr als beispielsweise Python, Ruby, PHP oder JavaScript), war sie schneller als die meisten verfügbaren C ++ - Implementierungen.
Aber dann hat Sun das Self-Projekt (eine ausgereifte OO-Allzwecksprache für die Entwicklung großer Systeme) abgebrochen, um sich auf eine kleine Skriptsprache für animierte Menüs in TV-Set-Top-Boxen zu konzentrieren (Sie haben vielleicht davon gehört, es heißt Java) mehr Finanzierung. Gleichzeitig haben Intel, IBM, Microsoft, Sun, Metrowerks, HP et al. hat viel Geld und Ressourcen ausgegeben, um C ++ schnell zu machen. CPU-Hersteller haben ihren Chips Funktionen hinzugefügt, um C ++ schnell zu machen. Betriebssysteme wurden geschrieben oder geändert, um C ++ schnell zu machen. C ++ ist also schnell.
Ich bin mit Python nicht sonderlich vertraut, ich bin eher eine Ruby-Person, daher werde ich ein Beispiel von Ruby geben: Die Hash
Klasse (entspricht in Funktion und Bedeutung der dict
in Python) in der Rubinius Ruby-Implementierung ist in 100% reinem Ruby geschrieben; Dennoch konkurriert es günstig und übertrifft manchmal sogar die Hash
Klasse in YARV, die in handoptimiertem C geschrieben ist. Und im Vergleich zu einigen kommerziellen Lisp- oder Smalltalk-Systemen (oder der oben genannten Self-VM) ist Rubinius 'Compiler nicht einmal so clever .
Python enthält nichts, was es langsam macht. Es gibt Funktionen in heutigen Prozessoren und Betriebssystemen, die Python schaden (z. B. ist bekannt, dass der virtuelle Speicher für die Leistung der Speicherbereinigung schrecklich ist). Es gibt Funktionen, die C ++ helfen, aber Python nicht helfen (moderne CPUs versuchen, Cache-Fehler zu vermeiden, weil sie so teuer sind. Leider ist es schwierig, Cache-Fehler zu vermeiden, wenn Sie über OO und Polymorphismus verfügen. Stattdessen sollten Sie die Cache-Kosten senken vermisst. Die Azul Vega CPU, die für Java entwickelt wurde, macht das.)
Wenn Sie so viel Geld, Forschung und Ressourcen für die schnelle Erstellung von Python ausgeben wie für C ++, und Sie so viel Geld, Forschung und Ressourcen für die Erstellung von Betriebssystemen ausgeben, mit denen Python-Programme schnell ausgeführt werden, wie dies für C ++ getan wurde, und Sie wie für ausgeben Viel Geld, Forschung und Ressourcen für die Erstellung von CPUs, mit denen Python-Programme schnell ausgeführt werden, wie dies für C ++ der Fall war. Ich bin mir sicher, dass Python eine vergleichbare Leistung wie C ++ erzielen kann.
Wir haben mit ECMAScript gesehen, was passieren kann, wenn nur ein Spieler die Leistung ernst nimmt. Innerhalb eines Jahres konnten wir bei allen großen Anbietern eine 10-fache Leistungssteigerung erzielen.