您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

PyPy —如何击败CPython?

PyPy —如何击败CPython?

在某些情况下,手动内存管理(这是cpython对其计数的方式)可能比自动管理要慢。

cpython解释器的实现局限性排除了PyPy可以进行的某些优化(例如,细粒度的锁)。

正如Marcelo所述,JIT。能够即时确认对象的类型可以节省您进行多个指针取消引用的操作,以最终到达您要调用方法

PyPy解释器在RPython中实现,RPython是Python的静态类型子集(该语言而不是cpython解释器)。-有关详细信息,请参阅https://pypy.readthedocs.org/en/latest/architecture.html

那将取决于这些假设解释器的实现。例如,如果其中一个拿到了源代码,对其进行了某种分析,并在运行了一段时间后将其直接转换为目标紧密的特定汇编代码,我想它会比cpython快得多。

最近,在一个精心设计的示例中,PyPy优于使用编译的类似C程序gcc -O3。这是一个人为的案例,但确实体现了一些想法。

从官方网站。https://pypy.readthedocs.org/zh_CN/latest/architecture.html#mission- statement

我们旨在提供:

一个通用的翻译和支持框架,用于生成 动态语言的实现,强调 在语言规范和实现 方面之间的明确区分。我们称此为RPython toolchain_。

Python_语言的合规,灵活和快速实现,该语言使用上述工具链来启用新的高级高级功能,而不必对低级细节进行编码。

通过以这种方式分离关注点,我们的Python和其他动态语言的实现能够为任何动态语言自动生成即时编译器。它还允许采用混合匹配的方法来实施决策,包括许多历史上在用户控制范围之外的决策,例如目标平台,内存和线程模型,垃圾回收策略以及所应用的优化,包括是否具有首先是JIT。

C编译器gcc用C实现,Haskell编译器GHC用Haskell编写。您是否有理由不使用Python编写Python解释器/编译器?

python 2022/1/1 18:39:24 有257人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶