狂揽两千星,速度百倍提升,高性能Pyth

机器之心报道

机器之心编辑部

这个高性能Python编译器具有支持Python众多语法、完美互通其他框架等优点。

众所周知,Python是一门简单易学、具有强大功能的编程语言,在各种用户使用统计榜单中总是名列前茅。相应地,围绕Python,研究者开发了各种便捷工具,以更好的服务于这门语言。

编译器充当着高级语言与机器之间的翻译官,不同版本的Python编译器已被开发出来,下面我们将为大家介绍一款新的高性能Python编译器:Codon。该项目上线短短几天,已收获2.2k星。

作为高性能Python编译器,Codon可将Python代码编译为本机机器代码,而无需任何运行时开销。在单线程上,Python的典型加速大约为10-倍或更多。Codon的性能通常与C/C++的性能相当。与Python不同,Codon支持本机多线程,这可以使速度提高很多倍。Codon可通过插件基础结构进行扩展,它允许用户合并新的库、编译器优化甚至关键字。

Codon框架是完全模块化和可扩展的,允许无缝集成新模块、编译器优化、领域特定语言等,并积极为生物信息学和量化金融等多个领域开发新的Codon扩展。

CodonPipeline

这个一经发布就疯狂揽星的编译器效果如何呢?下面我们来看看一些基准测试结果。

基准测试

以下是来自Codon基准测试套件的结果,比较了Python、PyPy、C++和Codon在一系列任务和应用程序上的表现。

基准测试在以下设置上运行:

Python、PyPy、Codon的对比

Python、PyPy、C++、Codon的对比

几种语言的具体对比如下:

Codon尽可能地遵循CPython语法、语义和API,但在一些特殊情况下,考虑性能原因,Codon与CPython会有些不同,例如Codon为64位int,CPython是任意宽度int。在性能方面,CPython的加速通常是10-倍的加速。

虽然Codon确实提供了一个类似于Numba的JIT装饰器,但Codon通常是一个提前(ahead-of-time)编译器,可以将端到端程序编译为本机代码。它还支持编译更广泛的Python构造和库集。

PyPy的目标是成为CPython的简易替代品,而Codon在一些地方有所不同,这些不同主要体现在消除动态运行时或虚拟机上,从而获得更好的性能。

Codon通常生成与等效的C或C++程序相同的代码,有时可以生成比C/C++编译器更好的代码。原因有很多,例如更好的容器实现,Codon不使用目标文件和内联所有库代码,或者不使用C执行的特定于Codon的编译器优化或C++。

Codon的编译过程实际上更接近C++而不是Julia。Julia是一种动态类型语言,它执行类型推断作为优化,而Codon类型是提前检查整个程序。Codon还试图通过采用Python的语法和语义来规避新语言的学习曲线。

常见问题解答

虽然Codon几乎支持Python的所有语法,但它并不是一个简单的替代品,大型代码库可能需要修改才能通过Codon编译器运行。例如,一些Python的模块还没有在Codon中实现,一些Python的动态特性是不允许的。Codon编译器会生成详细的错误消息,以帮助识别和解决任何不兼容问题。Codon支持无缝的Python互操作性,以处理需要特定Python库或动态性的情况。

我想使用Codon,但我有一个大型Python代码库且不想移植,怎么办?

你可以通过

codon.jit装饰器来使用Codon,这将只编译带注释的函数,并自动处理与Codon之间的数据转换。它还允许使用任何特定于Codon的模块或扩展,例如多线程。

与其他语言和框架的互通性如何?

互通性是Codon的优先事项。我们不希望使用Codon使用户无法使用现有的其他优秀框架和库。Codon支持与Python和C/C++的完全互通。

Codon是否使用垃圾收集?

是的,Codon使用了Boehm垃圾收集器。

Codon不支持Python模块X或函数Y?

虽然Codon涵盖了Python标准库的一个相当大的子集,但它还没有涵盖每个模块的每个函数。请注意,仍然可以通过Python调用缺少的函数frompythonimport。许多缺少Codon本地实现的函数(例如I/O或OS相关功能)通常不会实现Codon的实质性加速。

对于我的应用程序,Codon并不比Python快?

大部分时间用在C语言实现的库代码中的应用程序通常不会在Codon中看到实质性的性能提升。同样地,受I/O或网络限制的应用程序在Codon中也会遇到相同的瓶颈。

对于我的应用程序,Codon比Python慢?

如果是这样,请将Codon明显比Python慢的情况报告给问题跟踪器。

Codon是免费的吗?

对于非生产用途,Codon始终是免费的。用户可以免费将Codon用于个人、学术或其他非商业应用。

Codon是开源的吗?

Codon是根据商业源代码许可证(BSL)获得许可的,它的源代码是公开可用的,并且可以免费用于非生产用途。BSL在技术上不是「开源」许可证,尽管在许多情况下你仍然可以像对待任何其他开源项目一样对待Codon。重要的是,根据BSL,每个版本的Codon都会在3年后转换到实际的开源许可证(特别是Apache)。




转载请注明:http://www.aierlanlan.com/rzfs/3188.html