天天快讯:让 Python 拥有 C/C++ 一样的速度,编译神器 Codon 发布!
编译|苏宓转自|CSDN(ID:CSDNnews)Python的运行速度快吗?虽说不同场景不同定论,但整体而言,它没有C、Java快。这也导致Python凭借可读性、
Python 的运行速度快吗?虽说不同场景不同定论,但整体而言,它没有 C、Java 快。这也导致 Python 凭借可读性、简单易上手、良好的生态系统横行 AI 领域时,一提到速度,就成为众多开发者头疼的问题。
为了解决这一难题,麻省理工学院的计算机科学家出手了,他们共同研发了一种名为Codon 的 Python 编译器,可以将 Python 代码转化为本地机器代码,而不会对运行时的性能产生影响。
(相关资料图)
当前,Codon 已经在 GitHub 上开源:https://github.com/exaloop/codon,斩获9.2kStar。
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
关键词:
编译|苏宓转自|CSDN(ID:CSDNnews)Python的运行速度快吗?虽说不同场景不同定论,但整体而言,它没有C、Java快。这也导致Python凭借可读性、
今天小编肥嘟来为大家解答以上的问题。20000越南盾是多少人民币,20000相信很多小伙伴还不知道,现在让我们一起来看看吧!1、15 6=2 5米4
自建开源大数据平台会随着企业数据的增长遇到:性能慢、扩容周期长、平台稳定性差、运维难、投入成本高等问题。在这里我们将从EMR的简介、EMR
1、盛伊,中国跳水运动员,效力于天津队。2、2012年获得国家体育总局授予的“国际级运动健将”称号。
伊能静儿子出国旅行庆生,女装妩媚男装痞帅,蜘蛛蟑螂纹身太前卫前不久,伊能静的儿子哈利迎来了他的21岁生日,不少好友都在晒出照片为他庆生
2022年9月,国常会确定专项再贷款与财政贴息配套支持部分领域设备更新改造,这一政策激活了医疗设备采购市场,医械器械设备市场需求逐步释放,
1、可以用秀展网,它是一个在线动画制作平台,免费的。2、具体制作步骤:登录秀展网账号,选择合适的模版进行套用,再对模版内容、图片、字体
据中国报告大厅对2023年3月20日湖北省VA64价格最新走势监测显示:2023年3月20日湖北省VA64(国标)均价1
App3月20日消息,欧股期货回吐此前因瑞银集团收购瑞士信贷集团而出现的涨幅,投资者对全球金融体系的健康状况仍持怀疑态度。欧洲斯托克506月合
解答:1、看外表。黄瓜个头小,长短粗细均匀,柄短(也就是黄瓜的根部),质量较好。不要买看起来畸形的,肚子大的,特别厚的,
今天小编肥嘟来为大家解答以上的问题。香港电话怎么打最便宜,香港电话怎么打相信很多小伙伴还不知道,现在让我们一起来看看吧!1、正确的输入
博鳌乐城先行区:加大“走出去”“请进来”力度“上门服务”揽人才
1、贾玲的父亲贾文田再婚了,在女儿们的撮合下,找到了合适的老伴。2、梦醒时分,或许他最后悔的是,当时自己的逃避,让女儿吃
1、去下framework,现在用的多的是4 0,要下framework4 0。2、但我补充个,【部分游戏framework4 0不行,framework2 0
格隆汇3月19日丨洛阳钼业(03993 HK)发布公告,洛阳高科钼钨材料有限公司(“洛阳高科”)和栾川君龙矿业有限公司(“君龙矿业”)均为公司的全资子
3月19日,据重庆日报报道,重马赛道终点附近,一位跑友将一捧玫瑰花送给女朋友,这位女士被突如其来的惊喜深深感动,眼中盈满
1、德约科维奇先后与莎娃、伊万传出过绯闻,然而绯闻过后正牌女友终于亮相--在小德比赛时,一位身材高挑的金发美女始终默默关
1、有效快捷的投诉圆通快递有四个方法:拨打圆通快递官网电话进行投诉;2、网上填写投诉建议,填写快递相关信息,提交即可。2、3、在国家邮政局
我们还听到了大家对密码锁和疲劳机制的担忧,我们进行了一些调整以平衡它。我们将继续监控它们的情况并根据大家的反馈进行调整,保持联系!BUG
1、公孙胜。2、坐第四把交椅的、入云龙公孙胜。以上就是【陆云龙个人资料,陆云龙】相关内容。