首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PyPy诉Nuitka

PyPy诉Nuitka
EN

Stack Overflow用户
提问于 2017-12-27 12:29:51
回答 2查看 6.1K关注 0票数 14

在过去的几天里,我一直在玩Nuitka,这是一个将Python编译成可执行的C/C++程序的工具。

我还没有发现努特卡的任何速度优势(与PyPy相比)。那么,Nuitka的意思是什么?我是不是遗漏了什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-12-28 06:59:38

纽特卡和PyPy有非常不同的目标。

努特卡使用python提前(AOT)将您的python项目编译到C。这样,它更类似于Cython。它仍然是一个年轻的项目,但令人印象深刻的是,它已经与庞大的python语言规范完全兼容。下一步将是在编译器过程中启用优化,就像gcc -O3一样。注意,Nuitka用于将您的python代码转换为可执行文件。然后,您可以“传送”可执行文件,并对原始python代码进行一定程度的删除。

PyPy及时编译正在运行的代码到程序集。它跟踪运行的代码,识别热点,并生成更快版本的程序热点部分。它也与python语言规范完全兼容。它不会提前转换您的python代码,所以您可以将您的python代码作为最终产品。

我预计这两个项目将继续提高执行速度,但它们针对的目标是非常不同的需求。

票数 27
EN

Stack Overflow用户

发布于 2021-08-05 07:26:14

Nuitka :Nuitka是用本身编写的,它以Python模块作为输入,并提供c程序作为输出。输出是针对libpython和其他静态c文件执行的,并充当扩展模块或可执行文件。

重要的是要知道,Nuitka编译的输出比原始python程序优化得更好,速度更快,但它仍然不符合从纯C代码创建的可执行文件的性能。许多开发人员声称与基本Python代码解释相比,Nuitka编译程序的速度提高了4倍。

Nuitka最棒的地方是它与几乎所有版本的Python兼容,包括3.3、3.9、2.6、2.7等。

到目前为止,它也得到了非常积极的开发,开发人员希望将Nuitka转换成一个编译器,该编译器可以在Python代码之外提供本地C性能。

PyPy :与Nuitka一样,PyPy也支持Python2和Python3规范。PyPy是CPython最流行的替代品,CPython是默认的Python编译器。

PyPy编译器最初是为了加速Python编译器的执行而创建的,为此,它利用了准时编译(JIT)。基于JIT的编译器将原始代码作为输入,并在执行之前将代码转换为机器代码。

执行速度并不是PyPy的唯一优势,它还减少了内存使用,并提供了一个选项,可以像无堆栈python那样编写无堆栈的应用程序。

同样重要的是,在短时间运行的进程中,PyPy不会给您提供性能或内存利用率优势。但是,当您有长时间运行的过程时,性能的提高是非常显著的。

短进程缺乏性能的主要原因是JIT编译器需要时间来热身,从而带来固有的初始化开销。

对于内存的使用也是如此,对于小型程序来说,JIT所需的额外内存比执行编译代码所带来的任何好处都要大。与原始python代码执行相比,开发人员已经尝试了PyPy,以获得高达15倍的性能。

更多细节可以在纽特卡对PyPy上找到

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47992232

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档