机文章

python基于c语言的编译器诞生于哪1年?python怎么读:让 Python 拥有 C/C++ 1样的速度,编译神器 Codon 发布!美国画家Alan Ayers 人物画欣赏 速看

 

当我们谈论互联网时,我们总是能发现许多令人兴奋的事情。今天,就让我们坐下来,聊1聊最近在这个令人着迷的领域中发生的1些令人瞩目的事件。

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

为了解决这1难题,麻省理工学院的计算机科学家出手了,他们共同研发了1种名为 Codon 的 Python 编译器,可以将 Python 代码转化为本地机器代码,而没有会对运行时的性能产生影响当前,Codon 已经在 GitHub 上开源:https://github.com/exaloop/codon,斩获 6300 个 Star。

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

"

Python 没有同的是,Codon 支持本地多线程,这可以使速度提高许多倍Codon 最初是作为1个在 Python 中创建高性能特定领域语言(DSL,domain-specific language)的框架而开发的。

DSL 是专注于特定目的的语言,而没有是像 Python 或 C 这样的通用编程语言据官方 GitHub repo 透露,Codon 源于 Seq 项目,后者是1个用于生物信息学和遗传学的 DSL,现如今它已经成长为1 Python 3 基本兼容的语言编译器。

近期,外媒 The Register 通过该工具的研究团队内部最新分享了1个关于 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 是作为1个独立的系统从头开始构建的,它可以提前编译为静态可执行文件,并且没有现有的 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 应用程序的最简单的前进道路,这些应用程序由于缺性能而达到了1个极限"测试那么 Codon 是否真的如说的那样快?在 Codon 论坛上,1位开发者进行了测试:。

$ cat fib.py def fib(n): if n == 0: return 0 elif n == 1: return 1 else: return fib(n) + fib(n)

if __name__ == "__main__": import sys print(fib(int(sys.argv[1])))CPython 3.11$ python fib.py 40

102334155# mem: 8816_KB# time: 18.42_sPyPy 7.3.9$ pypy fib.py 40102334155# mem: 74596_kB# time: 4.99_s

# ~= 3.7xCodon compiled$ codon build -release fib.py$ ./fib 40102334155# mem: 5612_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 40102334155# mem: 12828# time: 18.49# ~= 1x最终发现,1个简单的 Codon 编译的斐波那契脚本比 CPython 版本快 70 多倍。

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

最终结果如下所示:

据 Codon 官方文档显示,虽然 Codon 的语法和语义 Python 的几乎相同,但还是有1些值得1提的区别,如数据类型方面:整数Codon 的 int 是1个 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

如果您觉得这篇文章很棒,请分享给您的同事或朋友圈。

为您推荐

python基于c语言的编译器诞生于哪1年?python怎么读:让 Python 拥有 C/C++ 1样的速度,编译神器 Codon 发布!美国画家Alan Ayers 人物画欣赏 速看

python基于c语言的编译器诞生于哪1年?python怎么读:让 Python 拥有 C/C++ 1样的速度,编译神器 Codon 发布!美国画家Alan Ayers 人物画欣赏 速看

当我们谈论互联网时,我们总是能发现许多令人兴奋的事情。今天,就让我们坐下来,聊1聊最近在这个令人着迷...

2023-06-09 栏目:编程控
最近发表

当前非电脑浏览器正常宽度,请使用移动设备访问本站!