Python——CPython 与 PyPy
Python——CPython 与 PyPy
最常用的参考实现是 Python,可能是 CPython。它是用 C 和 Python 编写的,包括一个解释器和一个编译器(用于 Python 字节码)。 CPython 没有内置的 JIT(即时编译)(这意味着它不会将代码编译为特定 CPU 的机器指令)。
另一方面,PyPy 是 Python 的另一种支持 JIT 的实现(因此速度更快——请看下面屏幕截图中的示例)。根据 PyPy 团队所做的不同基准测试,它似乎比 CPython 快 4.7 倍( https://speed.pypy.org/ )。
它的疯狂之处在于您不需要重写代码。唯一需要做的就是用 PyPy 替换 CPython。重要的是要知道 PyPy 支持“Python Echosystems”中的大多数工具。例如 pip(包管理器)和 virtualenv(Python 的虚拟环境)。甚至大多数 Python 包都受支持——但不是全部(你可以在以下链接中看到 PyPy 支持的包列表—— http://packages.pypy.org/ )。
此外,PyPy 类似于 HotSpot(Java 虚拟机 JIT 引擎)的方式。它使用来自 Python 代码执行的动态信息来识别诸如正在使用的对象类型之类的东西(并基于此优化编译的代码)。假设我们有一个只使用两种类型对象的函数,那么 PyPy 可以创建只处理它们的机器代码。
此外,您应该记住,PyPy 不是“Python 编译器”并且不支持 AOT(head of time 编译)。如果您想了解有关“Python 编译器”的更多信息,请查看“Numba”( https://numba.pydata.org/ )。
最后,还有基于其网站的 Pyjion 是“A drop-in JIT Compiler for Python 3.10”( https://www.trypyjion.com/ )。我们将在单独的文章中介绍它。下次见;-)。
你可以在推特上关注我——@boutnaru ( https://twitter.com/boutnaru )。
Time benchmark between CPython and PyPy on the same computation
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明