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
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.
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.
"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.
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)
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.