PyPy erwähnte, dass es schneller als Python ist. Wie ist es wirklich?
Selbst mit Hilfe des Google-Lehrers auf Japanisch: "Es ist so!" Nur der Wikipedia-Lehrer kann die Erklärung finden.
Wenn es sich um eine englische Website handelt, gab es relativ viele Artikel in Blogs usw. Geben Sie also Ihr Bestes Ich habe versucht, ein wenig zusammenzufassen.
Hinweis: Auszug und Zusammenfassung aus verschiedenen Dokumenten, jedoch Übersetzung und Interpretation Es kann falsch sein. Wenn Sie darauf hinweisen, werden wir es korrigieren und hinzufügen.
Jede Referenzstelle etc. https://ja.wikipedia.org/wiki/PyPy http://pypy.org/index.html http://shomah4a.net/pypy-tutorial/ http://stups.hhu.de/mediawiki/images/f/f5/Tracing_JITs11_tracing_the_meta_level.pdf
Vor PyPy zunächst über Python. Weit verbreitetes sogenanntes Python bezieht sich auf CPython, das in der C-Sprache implementiert ist. (Es gibt auch Jython unter JavaVM und IronPython unter .Net) Und PyPy ist ein (selbsthostendes) Python, das in Python neu implementiert wurde. Wenn PyPy also ein in CPython neu implementiertes Python ist, sind es 70 Punkte (entsprechende Punktzahl).
RPython CPython hat übrigens eine Teilmenge namens RPython.
Eine Teilmenge ist Teil eines Systems oder einer Programmiersprache VBA ist eine Teilmenge von Visual Basic 6 als bekanntes Beispiel.
Außerdem ist das "R" in RPython eingeschränkt. Mit anderen Worten, RPython wurde in CPython mit Einschränkungen und Einschränkungen für CPython erneut implementiert. Es ist eine Teilmenge von Python (schwierig ...).
Und PyPy ist in diesem RPython implementiert. Was ist PyPy? ** Python in RPython implementiert, eine Teilmenge von CPython in C implementiert ** Es bedeutet das.
Ich werde etwas später darüber sprechen, warum ich RPython gemacht habe.
Eines der Verkaufsargumente von PyPy ist die "schnellere Ausführung als CPython". Warum ist es schneller, obwohl das Original das gleiche Python ist? Es ist von JIT.
"Just In Time Compiler", Laufzeitkompilierung. Durch Kompilieren und Konvertieren in Maschinensprache in Funktionseinheiten und Moduleinheiten Erhöht die Ausführungsgeschwindigkeit. (Der Interpreter wird zeilenweise ausgeführt.)
RPython implementiert übrigens Typinferenz, Es scheint, dass es zur Optimierung beim Kompilieren beiträgt.
http://shomah4a.net/pypy-tutorial/ Es gibt eine Erklärung des Tutorials zum Konvertieren in die Maschinensprache. Wenn Sie also interessiert sind, tun Sie dies bitte.
(Weitere Ergänzung) Das für das Tutorial erforderliche PyPy wird Mercurially vom offiziellen BitBucket geklont. https://bitbucket.org/pypy/pypy Wie auf der offiziellen PyPy-Download-Seite erläutert, Bitte beachten Sie, dass es sich unten befindet, abgesehen von den Binärdateien für die Ausführungsumgebung oben. Wenn Sie nur RPython verwenden, können Sie es auch normal mit pip löschen. Es gibt überraschend wenig Informationen darüber, wie dieser Bereich eingeführt werden kann.
PyPy wurde aus RPython weiter implementiert, um die Kompatibilität mit CPython-Code zu gewährleisten. Trotzdem gibt es einen Unterschied. Nachfolgend einige davon.
--Kann keine Python-Bibliothek verwenden, die in C-Sprache geschrieben ist
Der Grund, warum Sie die C-Sprachbibliothek nicht verwenden können, ist RPython. Es gibt jedoch auch eine PyPy-Version von NumPy, so dass es den Anschein hat, dass sie bis zu einem gewissen Grad befolgt wird.
Obwohl Gabekore behauptet, dass es nicht auf Referenzzählungen basiert, Was benutzt du dann? Es ist nicht klar ... Ich denke, es ist eine Marke und ein Sweep (Vermutung). Wenn Sie sich die Quelle ansehen, ist es eine Aufnahme (schwer zu lesen)
Ich habe versucht, es herauszufinden, weil ich überhaupt nichts über PyPy wusste. Nicht sehr gut organisiert. Ich werde weiter nachforschen, also die Geschichte Ich werde es wieder zusammensetzen, sobald es sich ansammelt.