Redian新闻
>
让 Python 拥有 C/C++ 一样的速度,编译神器 Codon 发布!

让 Python 拥有 C/C++ 一样的速度,编译神器 Codon 发布!

公众号新闻

推荐关注↓

来源:CSDN(ID:CSDNnews)

Python 的运行速度快吗?虽说不同场景不同定论,但整体而言,它没有 C、Java 快。这也导致 Python 凭借可读性、简单易上手、良好的生态系统横行 AI 领域时,一提到速度,就成为众多开发者头疼的问题。

为了解决这一难题,麻省理工学院的计算机科学家出手了,他们共同研发了一种名为 Codon 的 Python 编译器,可以将 Python 代码转化为本地机器代码,而不会对运行时的性能产生影响。

当前,Codon 已经在 GitHub 上开源:https://github.com/exaloop/codon,斩获 6300 个 Star。


Codon 与 C/C++ 性能相当


"在单线程上,比 Python 的典型速度提高了 10-100 倍或更多,"Codon repo写道,"Codon 的性能通常与 C/C++ 的性能相当(有时甚至更好)。"

与 Python 不同的是,Codon 支持本地多线程,这可以使速度提高许多倍。

Codon 最初是作为一个在 Python 中创建高性能特定领域语言(DSL,domain-specific language)的框架而开发的。DSL 是专注于特定目的的语言,而不是像 Python 或 C 这样的通用编程语言。

官方 GitHub repo 透露,Codon 源于 Seq 项目,后者是一个用于生物信息学和遗传学的 DSL,现如今它已经成长为一个与 Python 3 基本兼容的语言编译器。

近期,外媒 The Register 通过该工具的研究团队内部最新分享了一个关于 Codon 的论文。本论文的作者包含了,MIT、维多利亚大学等多名研究人员,如 Ariya Shajii(Exaloop)、Gabriel Ramirez(MIT CSAIL)、Haris Smajlović(加拿大维多利亚大学)、Jessica Ray(MIT CSAIL)、Bonnie Berger(MIT CSAIL)、Saman Amarasinghe(MIT CSAIL)和 Ibrahim Numanagić(维多利亚大学)。

这篇论文指出,"与其他面向性能的 Python 实现(如 PyPy 或 Numba)不同,Codon 是作为一个独立的系统从头开始构建的,它可以提前编译为静态可执行文件,并且不与现有的 Python 运行时(如 CPython 或 RPython)绑定执行。因此,Codon 可以实现更好的性能,并克服运行时的特定问题,如全局解释器锁"。

在论文中,作者也讨论了各种基于 Codon 的高性能 DSL,这些 DSL 设计用于生物信息学、数据压缩和并行编程,也利用了 Codon 的编译器基础设施。但是 Codon 可以大幅加速标准的 Python 程序,尽管那些依赖外部库(如 Django 或 DocUtils)的程序必须依赖 CPython 桥接,这就限制了 CPython 的性能。

"Codon 不需要使用像 numpy 这样的 C 语言实现的库来重写程序,也不需要完全用 C 语言重写,而是可以使用相同的 Python 实现,并给出你用 C 语言重写的相同性能",麻省理工学院教授和 CSAIL 首席研究员 Saman Amarasinghe说 道,"因此,我相信 Codon 是成功的 Python 应用程序的最简单的前进道路,这些应用程序由于缺乏性能而达到了一个极限。"


测试


那么 Codon 是否真的如说的那样快?在 Codon 论坛上,一位开发者进行了测试:

$ cat fib.py 

def fib(n):
    if n == 0:
        return 0
    elif n == 1:
        return 1
    else:
        return fib(n-1) + fib(n-2)

if __name__ == "__main__":
    import sys
    print(fib(int(sys.argv[1])))

CPython 3.11

$ python fib.py 40
102334155
# mem: 8'816_KB
# time: 18.42_s

PyPy 7.3.9

$ pypy fib.py 40
102334155
# mem: 74'596_kB
# time: 4.99_s
# ~= 3.7x

Codon compiled

$ codon build -release fib.py
$ ./fib 40
102334155
# mem: 5'612_kB
# time: 0.26_s
# ~= 70.8x

Codon with python interpreter

# in fibpy.py, we just add `@python` decorator to fib function
$ codon build -release fibpy.py
export CODON_PYTHON=/path/to/libpython3.11.so
$ ./fibpy 40
102334155
# mem: 12'828
# time: 18.49
# ~= 1x

最终发现,一个简单的 Codon 编译的斐波那契脚本比 CPython 版本快 70 多倍。

除此之外,该研究团队也在 GitHub 上贴出了 Codon 基准测试套件的结果,比较了 Python、PyPy、C++ 和 Codon 在一系列任务和应用上的表现。该基准测试是在以下设置上运行的:

最终结果如下所示:

据 Codon 官方文档显示,虽然 Codon 的语法和语义与 Python 的几乎相同,但还是有一些值得一提的区别,如数据类型方面:

  • 整数。Codon 的 int 是一个 64 位有符号的整数,而 Python 的(在版本 3 之后)可以是任意大的。然而 Codon 通过 Int[N] 支持更大的整数,其中 N 是位宽。

  • 字符串。Codon 目前使用 ASCII 字符串,与 Python 的 unicode 字符串不同。

  • 字典。Codon 的字典类型不保留插入顺序,与 Python 3.6 的不同。

此外,Codon 和 Python 在类型检查、数值运算、模块等维度还有些许的不同,更详细的内容可参考:https://docs.exaloop.io/codon/general/differences据悉,Codon 已经被商业化地应用在金融和生物信息学、深度学习等领域。

参考来源:

https://www.theregister.com/2023/03/11/python_codon_compiler/

GitHub 地址:https://github.com/exaloop/codon


- EOF -




推荐阅读  点击标题可跳转

0、极客专属:几十款程序员秒懂的T恤/卫衣

1、Gmail 之父:有了 ChatGPT,搜索引擎活不过两年了

2、ChatGPT 版必应发飙!怒斥人类:放尊重些

3、划时代!微软发布 ChatGPT 版搜索引擎


关注「程序员的那些事」加星标,不错过圈内事

点赞和在看就是最大的支持❤️

微信扫码关注该文公众号作者

戳这里提交新闻线索和高质量文章给我们。
相关阅读
美国制造业回流的速度,超乎我们的想象麻省理工Python增强编译器Codon 让Python像C\\C++一样高效如何在 Ubuntu 和 Fedora 中设置 Python 开发环境 | Linux 中国世界上最重要的原油价格即将彻底转变(由翻译神器ChatGPT贡献)5 个常见运维场景,居然用 Python 轻松解决了!2023需求最高的编程语言:Python、JavaScript和Java推荐几个Python技术变现的新渠道!谷歌开源!一个格式化 Python 代码的好帮手火爆私校的6-18岁少儿Python编程课免费领!藤校师资,竞赛AP大满贯!柏林工大也有自己的Döner店了!厉害!加拿大华裔开发AI翻译神器,只为更好与父母交流老海归的收入、纳税、理财刚刚!摩根大通实习生录取标准曝光:会Python太吃香了!刚刚!高盛实习生录取标准曝光:会Python太吃香了!小白速成!清华大学出品《Python漫画教学书》!零基础留学生速领送新书!《Python深度学习基于Torch/TF(第2版)》,有ChatGPT拓展Artipie:可用于 Python 的开源仓库管理器 | Linux 中国丢掉Excel,手把手教你用Python做可视化数据,还能任意调节动画丝滑度重访西班牙(3)-穆斯林的嘉年华这一次,Python 真的有望告别 GIL 锁了?Python:多次登峰但槽点不断,2023年还值得学吗?| 极客时间这款编译器能让Python和C++一样快!最高提速百倍,MIT出品!国殇2022,文学城网友的集体哀悼25 道 Python 练手题(附答案)为什么适用于Python的TensorFlow正在缓慢消亡曹禺:再也写不出伟大的作品瑞银的胜利,瑞士银行业的耻辱!!(由翻译神器ChatGPT贡献)爆料一个Python圈子里的小道消息...海涅、席勒和肖邦这款编译器能让Python和C++一样快:最高提速百倍,MIT出品欠款2亿?麻薯冷掉的速度,比蹿红时还快为什么你出图的速度,永远比别人慢1倍?使用 Beautiful Soup 在 Python 中抓取网页华裔小伙发明“翻译神器”,感觉再也不用学外语了Pandas:用于数据分析和数据科学的最热门 Python 库 | Linux 中国
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。