众所周知,Python是一门简单易学、功能强大的编程语言,在各种用户使用中始终名列前茅统计列表。相应地,围绕Python,研究人员开发了各种方便的工具来更好地为这门语言服务。编译器充当高级语言和机器之间的翻译器。已经开发了不同版本的Python编译器。下面我们将介绍一款全新的高性能Python编译器:Codon。该项目在启动后的短短几天内已经获得了2.2k星。项目地址:https://github.com/exaloop/codon作为一个高性能的Python编译器,Codon可以将Python代码编译成原生机器码,没有任何运行时开销。Python的典型加速在单个线程上大约为10-100倍或更多。Codon的性能大体上与C/C++相当。与Python不同,Codon支持原生多线程,这可以带来很多倍的速度。Codon可通过插件基础结构进行扩展,允许用户合并新库、编译器优化甚至关键字。Codon框架是完全模块化和可扩展的,允许无缝集成新模块、编译器优化、特定领域语言等,并且正在为生物信息学和量化金融等不同领域积极开发新的Codon扩展。CodonPipeline这个一经发布就疯狂追星的编译器效果如何?让我们看看下面的一些基准测试结果。基准测试以下是Codon基准测试套件的结果,比较了Python、PyPy、C++和Codon在一系列任务和应用程序上的表现。基准测试在以下设置上运行:Python、PyPy、Codon与Python、PyPy、C++、Codon与Python、PyPy、C++、Codon与多种语言:Codon尽可能遵循CPython语法、语义和API,但是在某些特殊情况下,考虑到性能原因,Codon和CPython会有些不同,比如Codon是一个64位的int,而CPython是一个任意宽度的int。在性能方面,CPython加速通常是10-100倍加速。虽然Codon确实提供了一个类似于Numba的JIT装饰器,但Codon通常是一个提前编译器,可以将端到端程序编译为本机机器代码。它还支持编译更广泛的Python结构和库。虽然PyPy的目标是成为CPython的直接替代品,但Codon在几个地方有所不同,主要是消除了动态运行时或虚拟机以获得更好的性能。Codon通常生成与等效的C或C++程序相同的代码,有时可以生成比C/C++编译器更好的代码。这有很多原因,例如更好的容器实现,Codon不使用目标文件和内联所有库代码,或者不使用C或C++执行的特定于Codon的编译器优化。Codon的编译过程其实更接近C++而不是Julia。Julia是一种动态类型语言,它执行类型推断作为优化,而Codon类型会提前检查整个程序。Codon还试图通过采用Python的语法和语义来规避新语言的学习曲线。常见问题虽然Codon几乎支持Python的所有语法,但它并不是直接替代品,大型代码库可能需要修改才能通过Codon编译器运行。比如一些Python模块在Codon中还没有实现,Python的一些动态特性是不允许的。Codon编译器生成详细的错误消息,以帮助识别和解决任何不兼容问题。对于需要特定Python库或动态性的情况,Codon支持无缝的Python互操作性。我想使用Codon,但我有一个庞大的Python代码库并且不想移植它,我该怎么办?您可以通过@codon.jit装饰器使用Codon,它只会编译带注释的函数并自动处理与Codon之间的数据转换。它还允许使用任何Codon特定的模块或扩展,例如多线程。如何与其他语言和框架互操作?互操作性是Codon的首要任务。我们不想使用Codon将用户锁定在其他已经存在的优秀框架和库之外。Codon支持与Python和C/C++的完全互操作性。Codon是否使用垃圾收集?是的,Codon使用Boehm垃圾收集器。Codon不支持Python模块X或函数Y?虽然Codon涵盖了Python标准库的一个相当大的子集,但它还没有涵盖每个模块中的每个函数。请注意,仍然可以通过frompythonimport从Python调用缺少的函数。许多缺少Codon本地实现的函数,例如I/O或OS相关函数,通常不会实现实质性的Codon加速。对于我的应用程序,Codon不比Python快吗?将大部分时间花在用C实现的库代码中的应用程序通常不会在Codon中看到实质性的性能提升。同样,受I/O或网络限制的应用程序将在Codon中遇到相同的瓶颈。对于我的应用程序,Codon是否比Python慢?如果是这样,请向问题跟踪器报告Codon比Python慢得多。密码子是免费的吗?Codon始终免费用于非生产用途。用户可以免费将Codon用于个人、学术或其他非商业用途。Codon是开源的吗?Codon根据商业源代码许可证(BSL)获得许可,其源代码是公开可用的,可免费用于非生产用途。BSL在技术上不是“开源”许可证,尽管在许多情况下您仍然可以像对待任何其他开源项目一样对待Codon。重要的是,根据BSL,每个版本的Codon都会在3年后过渡到实际的开源许可证(特别是Apache)。
