Python3 和 pypy3 有什么区别



今天我知道pypy3在任何算法问题上都比python3快input()。性能差异几乎高达12倍。

为什么会有这样的差异?

请检查这一点,当我们谈到Python编程语言时,我们通常不仅指语言,还指实现。Python是一种语言的规范,可以通过许多不同的方式实现。

Python编程语言的默认实现是Cpython(假设python3是指Cpython(。顾名思义,Cpython是用C语言编写的。Cpython将python源代码编译成中间字节码,由Cpython虚拟机执行。

Jython是可以在Java平台上运行的Python编程语言的实现。Jython程序使用Java类而不是Python模块。Jython编译成Java字节代码,然后可以由Java虚拟机运行。

PyPy 如果你想让你的代码运行得更快,你可能应该只使用 PyPy。 — Guido van Rossum(Python 的创建者(Python是一种动态编程语言。据说Python很慢,因为默认的CPython实现以字节码编译python源代码,与机器码(本机代码(相比,这很慢。这时,PyPy进来了。

PyPy是用Python编写的Python编程语言的实现。解释器是用RPython(Python的一个子集(编写的。 PyPy 使用实时 (JIT( 编译。简单来说,JIT使用编译方法使解释器系统更加高效和快速。所以基本上JIT可以将源代码编译成本机机器代码,这使得它非常快。 PyPy 还默认支持无堆栈模式,为大规模并发提供微线程。据说它比Cpython快约7.5倍。

希望这对您有所帮助。

CPython

它是用C和C++编写的python语言的解释器。解释器将python代码(由人类编写,可以被人类读取(转换为机器代码(可以被机器读取/理解(。此过程涉及多个步骤。
CPython是Python的参考实现,用C语言编写。它将Python代码编译为中间字节码,然后由虚拟机解释。CPython提供与Python包和C扩展模块的最高级别的兼容性。
如果您正在编写开源 Python 代码并希望覆盖尽可能广泛的受众,那么针对 CPython 是最好的。要使用依赖 C 扩展的软件包来运行,CPython 是您唯一的实现选项。
所有版本的Python语言都是用C实现的,因为CPython是参考实现。

它是用RPython编写的python语言的JIT编译器。JIT 编译器执行需要编译的代码,即 JIT 在运行时编译代码,就在执行之前。
PyPy是一个Python解释器,在Python语言的一个受限静态类型子集中实现,称为RPython。解释器具有即时编译器,并支持多个后端(C,CLI,JVM(。
PyPy旨在与参考CPython实现实现的最大兼容性,同时提高性能。
如果你想提高Python代码的性能,值得一试PyPy。在一套基准测试中,它目前比CPython快5倍以上。
PyPy 支持 Python 2.7。PyPy3 以测试版发布,面向 Python 3。

我假设当你说python3时,你的意思是CPython默认和广泛使用的python语言实现。

CPython

它是用C and C++编写的python语言的解释器。解释器将python代码(由人类编写,可以由人类读取(转换为机器代码(可以通过机器/计算机读取/理解(。此过程涉及多个步骤。

它是用RPython编写的python语言的JIT编译器。JIT 编译器执行需要编译的代码,即 JIT 在运行时编译代码,就在执行之前。

这两种实现的处理python代码的不同方法是不同int速度背后的原因。下面的链接将为您提供更多详细信息。

很少有Python语言的实现,旨在实现不同的目标。

CPython

皮皮

吉特

CPython编译器的设计

皮皮

选择

最新更新