在过去的几天里,我一直在玩Nuitka,这是一个将Python编译成可执行C/C++程序的工具.
我没有发现Nuitka的任何速度优势(与PyPy相比).那么Nuitka是什么意思?我错过了什么吗?
mat*_*tip 14
Nuitka和PyPy有着截然不同的目标.
Nuitka使用python C-API进行您的python项目的Ahead Of Time(AOT)编译.通过这种方式,它更像Cython.它仍然是一个年轻的项目,但令人印象深刻的是完全兼容巨大的python语言规范.下一步将是在编译器进程中启用优化,就像gcc -O3
.请注意,Nuitka用于将python代码转换为可执行文件.然后,您可以"运送"可执行文件,并对原始python代码进行一定程度的虚假处理.
PyPy执行Just In Time(JIT)编译运行代码到汇编.它可以跟踪您运行的代码,识别热点,并生成程序热门部分的更快版本.它也与python语言规范完全兼容.它不会提前转换你的python代码,所以你将你的python代码"发送"为最终产品.
我希望这两个项目能够继续提高执行速度,但它们针对的是非常不同的需求.
小智 6
Nuitka :\nNuitka 是用 Python 本身编写的,它以 Python 模块作为输入,并提供 c 程序作为输出。输出针对 libpython 和其他静态 c 文件执行,并作为扩展模块或可执行文件运行。
\n重要的是要知道 Nuitka 编译的输出是高度优化的并且比原始 python 程序更快,但它仍然无法与从纯 C 代码创建的可执行文件的性能相匹配。许多开发人员声称,与基本的 Python 代码解释相比,Nuitka 编译的程序速度提高了 4 倍。
\nNuitka 最好的部分是它与几乎所有版本的 Python 兼容,包括 3.3、3.9、2.6、2.7 等。
\n目前它的开发也非常活跃,开发人员的目标是将 Nuitka 转变为一个可以从 Python 代码中提供本机 C 性能的编译器。
\nPyPy:\n与 Nuitka 一样,PyPy 也支持 Python 2 和 Python 3 规范。PyPy 是 CPython 最流行的替代品,CPython 是默认的 Python 编译器。
\nPyPy 编译器最初是为了加速 Python 执行而创建的,为此,它利用即时编译 (JIT)。基于 JIT 的编译器将原始代码作为输入,并在执行之前将代码转换为机器代码。
\n执行速度并不是 PyPy 的唯一优势,它还减少了内存使用量,并提供了像 stackless python 一样编写无堆栈应用程序的选项。
\n同样重要的是要注意,PyPy 不会在短时间运行的进程上为您提供性能或内存利用率优势。但是,当您有长时间运行的进程时,性能提升会非常明显。
\n短时间运行的进程缺乏性能主要是因为 JIT 编译器需要时间来预热,因此带来了固有的初始化开销。
\n内存使用也是如此,对于小型程序,JIT 所需的额外内存超过了执行已编译代码所获得的任何好处。开发人员已经尝试使用 PyPy 获得比原始 Python 代码执行高达 15 倍的性能。
\n\n 归档时间: |
|
查看次数: |
2463 次 |
最近记录: |