[PYTHON] Zusammenfassung der Grundkenntnisse von PyPy Teil 1

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

Python-Überprüfung

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.

Das Geheimnis der Geschwindigkeit

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.

Was ist 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.

Unterschied zwischen PyPy und CPython

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)

Das ist alles für heute

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.

Recommended Posts

Zusammenfassung der Grundkenntnisse von PyPy Teil 1
Grundkenntnisse in Python
Zusammenfassung der grundlegenden Verwendung von Pandas
Grundkenntnisse in Linux und Grundbefehle
Zusammenfassung der grundlegenden Implementierung von PyTorch
28.02.2014 Zusammenfassung der in #ssmjp, Teil 1, vorgestellten Inhalte
Kaggle Zusammenfassung: Redhat (Teil 1)
Tensorflow / Keras-Zusammenfassung
Grundlegende Bedienung von Pandas
Zusammenfassung der Verwendung von pyenv
Grundlegende Verwendung von Flask-Classy
Grundlegende Verwendung von Jinja2
Grundlegende Bedienung von Pandas
Grundlegende Verwendung von SQL Alchemy
Python Basic Memorandum Teil 2
Grundkenntnisse über Linux
Python-Grundnotiz - Teil 2
[Linux] Grundlegende Befehlsübersicht
Zusammenfassung der Zeichenfolgenoperationen
Zusammenfassung des grundlegenden Ablaufs des maschinellen Lernens mit Python
Kaggle Zusammenfassung: Redhat (Teil 2)
Zusammenfassung der Python-Argumente
Python-Grundnotiz - Teil 1
Zusammenfassung der Testmethode
Grundlegende Zusammenfassung der Datenoperationen in Python Pandas - Zweite Hälfte: Datenaggregation
Grundkenntnisse in DNS, die jetzt nicht zu hören sind
Grundlegende Zusammenfassung der Datenoperationen mit Python Pandas - Erste Hälfte: Datenerstellung und -operationen
Python-Anwendung: Pandas Teil 1: Basic
Super grundlegende Verwendung von Pytest
Zusammenfassung der Python-Dateivorgänge
Zusammenfassung der Python3-Listenoperationen
2017.3.6 ~ 3.12 Zusammenfassung unserer Aktivitäten
Grundlegende Verwendung der PySimple-Benutzeroberfläche
Teil 1 des Empfangs von Standardeingaben
Python-Grammatik-Grundnotiz (1)
Bequeme Nutzungsübersicht von Flask
Zusammenfassung der Linux-Verteilungstypen
Grundlegender Ablauf der Erkennung von Anomalien
XPath-Grundlagen (1) - Grundkonzept von XPath
Einzeiliges Basisdiagramm von HoloViews
Grundlegende Verwendung von Python-F-String
Eine kurze Zusammenfassung von Linux
Zusammenfassung der Proxy-Verbindungseinstellungen
Python x GIS-Grundlagen (1)
[Algorithmus x Python] Berechnung der Basisstatistik Teil2 (Mittelwert, Median, am häufigsten)
Ich habe die Grundoperation von Pandas im Jupyter Lab geschrieben (Teil 1)
Ich habe die grundlegende Operation von Pandas im Jupyter Lab geschrieben (Teil 2).