[PYTHON] Résumé des connaissances de base de PyPy Partie 1

PyPy a mentionné qu'il est plus rapide que Python. Comment est-ce vraiment?

Même avec l'aide d'un professeur de Google, en japonais, "C'est comme ça!" Seul le professeur de Wikipédia peut trouver l'explication.

S'il s'agit d'un site anglais, il y avait relativement beaucoup d'articles sur les blogs, etc. alors faites de votre mieux J'ai essayé de résumer un peu.

Note. Extraction et résumé de divers documents, mais traduction et interprétation Cela peut être faux. Si vous indiquez, nous le corrigerons et l'ajouterons.

Chaque site de référence 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

Examen Python

Avant PyPy, d'abord sur Python. Largement utilisé, le soi-disant Python fait référence à CPython implémenté dans le langage C. (Il existe également Jython fonctionnant sur JavaVM et IronPython fonctionnant sur .Net) Et PyPy est un Python (auto-hébergé) réimplémenté en Python. Donc, si PyPy est un Python réimplémenté en CPython, alors c'est 70 points (score approprié).

RPython À propos, CPython a un sous-ensemble appelé RPython.

Un sous-ensemble fait partie d'un système ou d'un langage de programmation VBA est un sous-ensemble de Visual Basic 6 comme exemple familier.

De plus, le "R" dans RPython est restreint. En d'autres termes, RPython a été réimplémenté dans CPython avec des restrictions et des restrictions sur CPython. C'est un sous-ensemble de Python (difficile ...).

Et PyPy est implémenté dans ce RPython. En conclusion, qu'est-ce que PyPy? ** Python implémenté en RPython, un sous-ensemble de CPython implémenté en C ** Cela signifie que.

Je vais expliquer pourquoi j'ai créé RPython un peu plus tard.

Le secret de la vitesse

L'un des arguments de vente de PyPy est "une exécution plus rapide que CPython". Pourquoi est-ce plus rapide même si l'original est le même Python? C'est par JIT.

Qu'est-ce que JIT

"Just In Time Compiler", compilation d'exécution. En compilant et en convertissant en langage machine en unités fonctionnelles et modules Augmente la vitesse d'exécution. (L'interpréteur est exécuté ligne par ligne)

Au fait, RPython implémente l'inférence de type, Il semble que cela contribue à l'optimisation au moment de la compilation.

http://shomah4a.net/pypy-tutorial/ Il y a une explication du tutoriel pour convertir en langage machine, donc si vous êtes intéressé, faites-le.

(Supplément supplémentaire) Le PyPy requis pour le didacticiel est cloné Mercurialement à partir du BitBucket officiel. https://bitbucket.org/pypy/pypy Comme expliqué sur la page de téléchargement officielle de PyPy, Veuillez noter qu'il est situé en bas, à l'exception des binaires de l'environnement d'exécution en haut. De plus, si vous n'utilisez que RPython, vous pouvez le supprimer normalement avec pip. Il y a étonnamment peu d'informations sur la façon de présenter ce domaine.

Différence entre PyPy et CPython

PyPy a ensuite été implémenté à partir de RPython pour la compatibilité avec le code CPython, Il y a toujours une différence. Voici quelques-uns d'entre eux.

La raison pour laquelle vous ne pouvez pas utiliser la bibliothèque de langage C vient de RPython. Cependant, il existe également une version PyPy de NumPy, il semble donc qu'elle soit suivie dans une certaine mesure.

Bien que Gabekore affirme qu'il n'est pas basé sur des chiffres de référence, Alors qu'est-ce que vous utilisez? Ce n'est pas clair ... Je pense que c'est une marque et un balayage (devinez). Si vous regardez la source, c'est un plan (difficile à lire)

C'est tout pour aujourd'hui

J'ai essayé de le savoir parce que je ne connaissais pas PyPy en premier lieu. Pas très bien organisé. Je continuerai d'enquêter, donc l'histoire Je le reconstituerai dès qu'il s'accumulera.

Recommended Posts

Résumé des connaissances de base de PyPy Partie 1
Connaissance de base de Python
Résumé de l'utilisation de base de Pandas
Connaissance de base de Linux et des commandes de base
Résumé de l'implémentation de base par PyTorch
2014/02/28 Résumé du contenu démo à #ssmjp, partie 1
Résumé de Kaggle: Redhat (Partie 1)
Résumé de Tensorflow / Keras
Fonctionnement de base des pandas
Résumé de l'utilisation de pyenv
Utilisation basique de flask-classy
Utilisation de base de Jinja2
Fonctionnement de base des Pandas
Utilisation de base de SQL Alchemy
Mémorandum de base Python partie 2
Connaissances de base sur Linux
Mémo de base Python - Partie 2
[Linux] Résumé des commandes de base
Résumé des opérations sur les chaînes
Résumé du flux de base de l'apprentissage automatique avec Python
Résumé de Kaggle: Redhat (partie 2)
Résumé des arguments Python
Mémo de base Python - Partie 1
Résumé de la méthode d'essai
Résumé de base des opérations de données dans Python Pandas - Deuxième moitié: agrégation de données
Connaissance de base du DNS qui ne peut pas être entendue maintenant
Résumé de base de la manipulation de données avec Python Pandas - Première moitié: création et manipulation de données
Application Python: Pandas Partie 1: Basique
Utilisation super basique de pytest
résumé lié à l'opération de fichier python
Résumé des opérations de liste Python3
2017.3.6 ~ 3.12 Résumé de ce que nous avons fait
Utilisation de base de l'interface graphique PySimple
Partie 1 de la réception de l'entrée standard
Mémo de grammaire de base Python (1)
Résumé d'utilisation pratique de Flask
Résumé des types de distribution Linux
Flux de base de détection d'anomalies
Principes de base de XPath (1) - Concept de base de XPath
Graphique de base à une ligne de HoloViews
Utilisation basique de la f-string Python
Un bref résumé de Linux
Résumé des paramètres de connexion proxy
Principes de base de Python x SIG (1)
[Algorithme x Python] Calcul des statistiques de base Partie 2 (moyenne, médiane, la plus fréquente)
J'ai écrit le fonctionnement de base de Pandas dans Jupyter Lab (partie 1)
J'ai écrit le fonctionnement de base de Pandas dans Jupyter Lab (partie 2)