python3 和 pypy3 有什么区别

新手上路,请多包涵

今天我知道 pypy3 比 python3 快 input() 通过任何算法问题的时间。性能差异几乎高达 12 倍。

为什么会有这样的差异?

原文由 Chanyang Sim 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 4.7k
2 个回答

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

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

Jython 是 Python 编程语言的一种实现,可以运行在 Java 平台上。 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 倍。

希望这会帮助你。

原文由 Saurav Rai 发布,翻译遵循 CC BY-SA 4.0 许可协议

CPython

它是用 C 和 C++ 编写的 python 语言的解释器。解释器将 python 代码(由人类编写并且可以被人类阅读)转换为机器代码(可以被机器阅读/理解)。这个过程涉及多个步骤。

CPython 是 Python 的参考实现,用 C 编写。它将 Python 代码编译为中间字节码,然后由虚拟机解释。 CPython 提供与 Python 包和 C 扩展模块的最高级别的兼容性。

如果您正在编写开源 Python 代码并希望覆盖尽可能广泛的受众,那么以 CPython 为目标是最好的选择。要使用依赖于 C 扩展功能的包,CPython 是您唯一的实现选项。

Python 语言的所有版本都是用 C 实现的,因为 CPython 是参考实现。

PyPy

它是用 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 为目标,以测试版发布。

原文由 user12408514 发布,翻译遵循 CC BY-SA 4.0 许可协议