- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已阅读 PyPy -- How can it possibly beat CPython?以及无数其他事情,但我无法理解用 Python 编写的东西如何比 Python 本身更快。
我能想到的唯一方法是 PyPy 以某种方式绕过 C 并直接编译为汇编语言指令。如果是这种情况,那就没问题了。
有人可以向我解释 PyPy 是如何工作的吗?我需要一个简单的答案。
我喜欢 python 并想开始贡献。无论他们是否提取我的代码,PyPy 看起来都是一个很棒的起点。但我无法从我所做的简短研究中理解。
最佳答案
理解 PyPy 的最简单方法是忘记它是用 Python 实现的。
它实际上不是,无论如何,它是在 RPython 中实现的。 RPython 可以使用 Python 解释器运行,但 Python 代码是 不是 能够被 RPython 编译器(PyPy 翻译框架)编译。 RPython 是 Python 的一个子集,但被“遗漏”的部分足够实质性,以至于 RPython 编程与 Python 中的正常编程非常不同。
因此,由于 Python 代码不能被视为 RPython 代码,而且惯用的 RPython 程序“外观和感觉”与惯用的 Python 程序非常不同,让我们完全忽略它们之间的联系,并考虑一个虚构的示例。
假设我开发了一种带有编译器的新语言 Frobble。我用 Frobble 编写了一个 Python 解释器。我声称我的“FrobblePython”解释器通常比 CPython 解释器快得多。
这让你觉得奇怪或不可能吗?当然不是。一个新的 Python 解释器可能比 CPython 解释器更快或更慢(或者更有可能,在某些方面更快,在其他方面更慢,幅度不同)。是否更快将取决于 FrobblePython 的实现,以及我的 Frobble 编译器编译的代码的性能特征。
那是 正好你应该如何看待 PyPy 解释器。用于实现它的语言 RPython 恰好能够被 Python 解释器解释(与编译 RPython 程序并运行它具有相同的外部结果)这一事实与理解它的速度完全无关。重要的是 PyPy 解释器的实现,以及由 RPython 编译器编译的代码的性能特征(例如 RPython 编译器可以自动为它编译的程序添加某些类型的 JITing 能力)。
关于pypy - PyPy 如何比 Cpython 更快,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12645394/
我是一名优秀的程序员,十分优秀!