自深度学习兴起以来,Python 一直是最热门的编程语言之一,它在数据科学和机器学习领域占主导地位,甚至是科学和数学计算领域的主角。如今你能想象到的任何项目,几乎都可以找到一个相应的 Python 包。
然而,尽管高级语言的简化语法使其易于学习和使用,但和 C 或 C++ 等低级语言相比,它的速度更慢。
麻省理工学院计算机科学与人工智能实验室(CSAIL)的研究人员希望通过 Codon 来改变这一现状,Codon 是一种基于 Python 的编译器,允许用户编写与 C 或 C++ 程序一样高效运行的 Python 代码,同时可以定制和适应不同的需求和环境。
该研究的最新论文《Codon: A Compiler for High-Performance Pythonic Applications and DSLs》发表在了 2 月份的第 32 届 ACM SIGPLAN 编译器构建国际会议上。
- 项目链接:https://github.com/exaloop/codon
- 论文:https://dl.acm.org/doi/abs/10.1145/3578360.3580275
在开发工作中,人们需要使用编译器将源代码转换为可由计算机处理器执行的机器代码,Codon 能帮助开发者在 Python 中创建新的领域特定语言(DSL),同时仍然获得其他语言的性能优势。
「常规 Python 会被编译成所谓的字节码,该字节码在虚拟机中执行,这就会让速度慢上很多,」Codon 论文的主要作者 Ariya Shajii 表示,「通过 Codon,我们则进行本地编译,因此你可以直接在 CPU 上运行最终结果 —— 不经过中间虚拟机或解释器。」
Codon 的编译管道包括类型检查,使其能够更高效地运行 Python 代码。
基于 Python 的编译器带有适用于 Linux 和 macOS 的预构建二进制文件,你还可以从源代码构建或生成可执行文件。「使用 Codon,你可以像 Python 一样分发源代码,或者你可以将它编译成二进制文件,」Shajii 说。「如果你想分发一个二进制文件,它将与像 C++ 这样的语言一样,例如一个 Linux 二进制文件或一个 Mac 二进制文件。」
为了让 Codon 更快,研究人员决定在编译时执行类型检查。类型检查涉及将数据类型(例如整数、字符串、字符或浮点数等)分配给值。例如数字 5 可以分配为整数,字母 c 可以分配为字符,单词 hello 可以分配为字符串,十进制数 3.14 可以分配为浮点数。
「在常规 Python 中,所有类型都给了 runtime,」Shajii 介绍道。「使用 Codon,我们在编译过程中进行类型检查,这让我们避免了在 runtime 进行所有昂贵的类型操作。」
MIT CSAIL 首席研究员 Saman Amarasinghe 补充说,「如果你有一种动态语言(比如 Python),每次你有一些数据时,你都需要在它周围保留很多额外的元数据,以确定 runtime 的类型。Codon 取消了这种元数据,因此代码速度更快,数据更小。」
根据 Shajii 的说法,Codon 在运行时没有任何不必要的数据或类型检查,所以开销为零。在性能方面,「Codon 通常与 C++ 不相上下。与 Python 相比,我们通常看到的是 10 到 100 倍的速度改进。」
另一方面,Codon 的方法有其权衡。「我们进行这种静态类型检查,并且不允许使用 Python 的一些动态特性,比如在 runtime 动态更改类型,」Shajii 表示。
「还有一些 Python 库我们还没有实现。」Amarasinghe 补充说,「Python 已经过无数人的实际测试,而 Codon 还没有达到那样的水平,它需要运行更多的程序,获得更多的反馈,并加固更多。达到常规 Python 的稳定水平需要一些时间。」
Codon 最初设计用于基因组学和生物信息学的工作。研究人员尝试了大约 10 个用 Python 编写的常用基因组学应用程序,并使用 Codon 对其进行了编译,与最初的手动优化实现相比实现了 5 到 10 倍的加速。
「如今这些领域的数据集已变得非常大,而像 Python 和 R 这样的高级语言速度太慢,无法处理每组测序 TB 级的数据量,」Shajii 说道。「这就是我们想要填补的空白 —— 通过构建一种无需写 C 或 C++ 代码即可处理大数据的方法,从而为非计算机科学或专业开发者的领域专家提供帮助。」
上述图表在几个基准上比较了 Python(CPython 3)、PyPy、Codon 和 C++ 的性能。y 轴显示 Codon 实现相对于 CPython 实现的加速。MIT/EXALOOP/UNIVERSITY OF VICTORIA/ACM
除了基因组学,Codon 还可以应用于处理海量数据集的类似应用程序,以及基于 Python 的编译器支持的 GPU 编程和并行编程等领域。事实上,Codon 现在正通过初创公司 Exaloop 在生物信息学、深度学习和量化金融领域进行商业应用,Shajii 创立了该公司,旨在将 Codon 从学术项目转变为行业应用。
为了使 Codon 能够适应不同领域,该团队开发了一个插件系统。「它就像一个可扩展的编译器,」Shajii 说道。「你可以为基因组学或其他领域编写插件,这些插件可以有新的库和新的编译器优化。」
此外,公司和机构可以使用 Codon 来制作原型和开发自己的应用程序。「我们看到的一种模式是:人们使用 Python 进行原型设计和测试,因为它易于使用,但到了某些重要事项上,他们就不得不重写应用程序,或让其他人用 C 或 C++ 在更大的数据集上进行重写与测试,」Shajii 表示。「通过 Codon,你就可以完全使用 Python,并获得两全其美的好处。」
关于 Codon 的未来,Shajii 和他的团队目前正在研究广泛使用的 Python 库的本地实现,以及特定于库的优化,以帮助人们从这些库中获得更好的性能。他们还计划创建一个广受欢迎的功能:Codon 的 WebAssembly 后端,以支持在 Web 浏览器上运行代码。
以上是这款编译器能让Python和C++一样快:最高提速百倍,MIT出品的详细内容。更多信息请关注PHP中文网其他相关文章!

由于AI的快速整合而加剧了工作场所的迅速危机危机,要求战略转变以外的增量调整。 WTI的调查结果强调了这一点:68%的员工在工作量上挣扎,导致BUR

约翰·塞尔(John Searle)的中国房间论点:对AI理解的挑战 Searle的思想实验直接质疑人工智能是否可以真正理解语言或具有真正意识。 想象一个人,对下巴一无所知

与西方同行相比,中国的科技巨头在AI开发方面的课程不同。 他们不专注于技术基准和API集成,而是优先考虑“屏幕感知” AI助手 - AI T

MCP:赋能AI系统访问外部工具 模型上下文协议(MCP)让AI应用能够通过标准化接口与外部工具和数据源交互。由Anthropic开发并得到主要AI提供商的支持,MCP允许语言模型和智能体发现可用工具并使用合适的参数调用它们。然而,实施MCP服务器存在一些挑战,包括环境冲突、安全漏洞以及跨平台行为不一致。 Forbes文章《Anthropic的模型上下文协议是AI智能体发展的一大步》作者:Janakiram MSVDocker通过容器化解决了这些问题。基于Docker Hub基础设施构建的Doc

有远见的企业家采用的六种策略,他们利用尖端技术和精明的商业敏锐度来创造高利润的可扩展公司,同时保持控制权。本指南是针对有抱负的企业家的,旨在建立一个

Google Photos的新型Ultra HDR工具:改变图像增强的游戏规则 Google Photos推出了一个功能强大的Ultra HDR转换工具,将标准照片转换为充满活力的高动态范围图像。这种增强功能受益于摄影师

技术架构解决了新兴的身份验证挑战 代理身份集线器解决了许多组织仅在开始AI代理实施后发现的问题,即传统身份验证方法不是为机器设计的

(注意:Google是我公司的咨询客户,Moor Insights&Strateging。) AI:从实验到企业基金会 Google Cloud Next 2025展示了AI从实验功能到企业技术的核心组成部分的演变,


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

WebStorm Mac版
好用的JavaScript开发工具

DVWA
Damn Vulnerable Web App (DVWA) 是一个PHP/MySQL的Web应用程序,非常容易受到攻击。它的主要目标是成为安全专业人员在合法环境中测试自己的技能和工具的辅助工具,帮助Web开发人员更好地理解保护Web应用程序的过程,并帮助教师/学生在课堂环境中教授/学习Web应用程序安全。DVWA的目标是通过简单直接的界面练习一些最常见的Web漏洞,难度各不相同。请注意,该软件中

SublimeText3 英文版
推荐:为Win版本,支持代码提示!

EditPlus 中文破解版
体积小,语法高亮,不支持代码提示功能

记事本++7.3.1
好用且免费的代码编辑器