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

Python效率优化:7个提升Python后端性能的工具 通过使用以上这些Python效率工具,我们可以显著提升Python后端应用程序的性能。无论是使用即时编译器、静态类型化扩展,还是利用并行处理、异步编程等技术,都可以根据具体场景选择合适的工具来优化Python代码。通过不断优化和改进,我们可以充分发挥Python的优势,提供高效的后端服务。Python是一种简单易学的编程语言,但在处理大规模数据和高并发场景下,其执行效率可能不如其他编程语言。本文将介绍7个常用的Python效率工具,并提供相应的源代码示例。 阅读详情

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 40102334155# mem: 8'816_KB# time: 18.42_s

PyPy 7.3.9

$ pypy fib.py 40102334155# mem: 74'596_kB# time: 4.99_s# ~= 3.7x
Codon compiled
$ codon build -release fib.py$ ./fib 40102334155# 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.pyexport CODON_PYTHON=/path/to/libpython3.11.so$ ./fibpy 40102334155# 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 已经被商业化地应用在金融和生物信息学、深度学习等领域。

Codon入门-第2部分 使用跨平台的Codon框架的设置服务来存储和检索设置。 立即下载

相关推荐

【CAPL实用开发】--- 使用VN1640A测试Busoff快慢恢复

使用VN1640A测试Busoff快慢恢复,包含具体的CAPL代码实现。

LabVIEW、CAPL、python、车载以太网等学习分享,文章正在写 2094

使用codon加速你的python程序

使用codon加速你的python程序

weixin_45921929的博客 3358

QuickFix Java 讲解(五)消息的收发与查看

本系列力求手把手教你怎样利用QuickFix Java 搭建自己的 FIX 协议收发平台,以及其中的注意事项。 所有源码的地址(免费): https://github.com/zongzhec/QuickFixPractise 这节我们讨论将Acceptor和Initiator启动以后,收到的消息极其查看方式。 6. 收发双方的通信 6.1. 启动后的通信和登录 为方便起见,这里我们使用统一的源码:https://github.com/zongzhec/QuickFixPractise ..

2246

什么是Cython?让Python有C语言的速度

Python的一个超集,可以编译为C,Cython结合了Python的易用性和原生代码的速度。Python作为最方便,丰富的配置和彻底有用的编程语言之一而享有盛誉。 但执行速度?没那么快。让我们开始了解Cython,Cython语言是Python的一个超集,编译成C语言,产生的性能提升可以从几个百分点到几个数量级,具体取决于手头的任务。 对于受Python原生对象类型约束的工作,加速将不会很大。 ...

Python达人 1万+

保姆级教程:用STM32CubeMX HAL库搞定ESP8266连接,附串口printf调试全流程

本文提供了一份详细的STM32CubeMX HAL库教程,指导开发者如何实现ESP8266无线模块的连接与调试。从开发环境搭建、串口配置到AT指令通信解析,涵盖了物联网开发中的关键步骤和常见问题解决方案,帮助开发者快速掌握STM32与ESP8266的集成技术。

weixin_28273593的博客 504

【零基础入门哈希签名架构,从Lamport到SPHINCS+】第二集 哈希签名树 Merkle Tree Authentication

在第一集中,我们一直忽略了一个问题。设想一下,假如有一个Hacker(黑客),在截获到Sender发送给Receiver的公钥之后,把这个公钥改成Hacker自己的公钥,然后再发给Receiver,那么Receiver就会误认为这是Sender的公钥。所以我们之前所说放方案,其安全性都需要建立在一个前提下:Receiver需要确认公钥确实是Sender发出的。

m0_50572808的博客 2453

提升 Python 执行速度:Codon、C/C++、Rust、Numba(JIT)、Taichi、Nuitka、MatxScript

提升 Python 执行速度:Codon、C/C++、Rust、Numba(JIT)、Taichi、Nuitka、MatxScript

freeking101的博客 4742

【Hyper-V】虚拟机网络配置全解析:从端口映射到固定IP实战

本文全面解析Hyper-V虚拟机网络配置,从理解虚拟交换机三种模式(外部、内部、专用)的底层逻辑入手,指导用户创建稳定的内部/NAT网络,并详细演示如何在Linux与Windows虚拟机中配置固定IP。文章进一步深入讲解端口映射原理与netsh命令实战,以及双网卡配置和PowerShell自动化脚本等高级技巧,帮助用户彻底解决虚拟机网络“失联”问题,实现灵活可控的网络环境。

weixin_29290947的博客 269

windows下VS code + codon 环境配置

一直想尝试下传说中的codon有多快,但是苦于codon不支持windows。看到他们应该是在做了(指新建pr(不是))。所以应该可以期待近期会有成果了吧。不过官方也说了利用wsl也是可以实现在windows下使用的。于是就想到能不能结合宇宙第一好用的vs code来尝鲜codon。搜索相关内容发现几乎没有,于是尝试了一下自己配置顺便分享给大家。。

LJZxiaolongbao的博客 889

密码学实战:如何利用生日攻击破解哈希函数

本文深入探讨了生日攻击在密码学中的应用及其对哈希函数的威胁。通过分析生日悖论的数学原理,揭示了哈希函数在实际应用中的脆弱性,并提供了防御策略,如升级哈希算法、正确使用加盐技术等。文章结合实战案例,帮助开发者理解如何有效防范此类攻击,确保系统安全。

weixin_42530732的博客 192

Dify框架面试内容整理-如何优化Dify的应用性能?

为1536维)可选用 PCA、FAISS 的量化压缩方法降低维度(如128、256、512);对知识库预览、任务流配置等页面,使用 nginx/cache-control 减少请求。API 响应耗时(P50/P95)、Token 使用量、缓存命中率、向量检索耗时;对 Prompt+输入内容计算 Hash,缓存相同请求的返回结果;使用占位符 + 函数拼接,按需组合 Prompt,而非静态长模板;数据量大时,应在构建索引前清洗冗余段落、统一格式,避免重复向量。维度越低,检索越快,但可能影响召回准确度,需平衡。

不务正业的猿 1551

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

编译 | 苏宓出品 | 优快云(ID:优快云news)Python 的运行速度快吗?虽说不同场景不同定论,但整体而言,它没有 C、Java 快。

2601_96209748的博客 195

串口、COM、UART、TTL、USB、RS-232、RS-485、I2C、SPI、CAN、1-WIRE

一文搞定,赶紧收藏吧

记得诚 3万+

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

Codon 不需要使用像 numpy 这样的 C 语言实现的库来重写程序,也不需要完全用 C 语言重写,而是可以使用相同的 Python 实现,并给出你用 C 语言重写的相同性能”,麻省理工学院教授和 CSAIL 首席研究员 Saman Amarasinghe说 道,“因此,我相信 Codon 是成功的 Python 应用程序的最简单的前进道路,这些应用程序由于缺乏性能而达到了一个极限。因此,Codon 可以实现更好的性能,并克服运行时的特定问题,如全局解释器锁”。Python 的运行速度快吗?

Python84310366的博客 454

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

“ChatGPT” 什么时候能取代程序员?【优快云 AI 编程榜】揭晓答案

优快云 AI 编程榜选择了六款 AI Coding 产品进行测评, ChatGPT、GPT 3.5 、CodeBBT、GitHub Copilot、CodeGeex、aiXcoder。最终,ChatGPT 以几乎接近满分的成绩摘得榜首,成为开发者辅助编码的最佳神器。各大模型对 C++ 和 Java 语言支持要优于其他几种语言,aiXcoder 排名最末位,其他几个产品水平相差无几。☞苹果 11 ...

程序人生的博客 351

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

高性能 Python 编译器 -- Codon

众所周知,Python 是一门简单易学、具有强大功能的编程语言,在各种用户使用统计榜单中总是名列前茅。相应地,围绕 Python,研究者开发了各种便捷工具,以更好的服务于这门语言。编译器充当着高级语言与机器之间的翻译官,不同版本的 Python 编译器已被开发出来,下面将介绍一款新的高性能 Python 编译器:Codon。该项目上线短短几天,已收获 2.2k 星。项目地址:https://github.com/exaloop/codon。

a1137588003的博客 358

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

速度百倍提升,高性能 Python 编译器 Codon 火了!

这是「进击的Coder」的第 882篇技术分享来源:机器之心“ 阅读本文大概需要 6 分钟。 ”众所周知,Python 是一门简单易学、具有强大功能的编程语言,在各种用户使用统计榜单中总是名列前茅。相应地,围绕 Python,研究者开发了各种便捷工具,以更好的服务于这门语言。编译器充当着高级语言与机器之间的翻译官,不同版本的 Python 编译器已被开发出来,下面我们将为大家介绍一款新的高性能 ...

静觅 798

狂揽两千星,速度百倍提升,高性能Python编译器Codon开源

例如,一些 Python 的模块还没有在 Codon 中实现,一些 Python 的动态特性是不允许的。Codon 尽可能地遵循 CPython 语法、语义和 API,但在一些特殊情况下,考虑性能原因,Codon 与 CPython 会有些不同,例如 Codon 为 64 位 int,CPython 是任意宽度 int。原因有很多,例如更好的容器实现,Codon 不使用目标文件和内联所有库代码,或者不使用 C 执行的特定于 Codon 的编译器优化或 C++。对于非生产用途,Codon 始终是免费的。

机器学习社区 944

狂揽两千星,速度百倍提升,Codon为何火成这样?

众所周知,是一门的编程语言,在各种用户使用统计榜单中总是。相应地,围绕 Python,研究者开发了各种便捷工具,以更好的服务于这门语言。编译器充当着高级语言与机器之间的翻译官,不同版本的 Python 编译器已被开发出来,下面我们将为大家介绍一款作为高性能 Python 编译器,,而无需任何运行时开销。在上,。与 Python 不同,,这可以使速度提高很多倍。。Codon 框架是,允许无缝集成新模块、编译器优化、领域特定语言等,并积极为生物信息学和量化金融等多个领域开发新的 Codon 扩展。

m0_48891301的博客 212

Codon: 高性能Python编译器实战指南

Codon 是一个基于LLVM的高性能、零开销扩展型Python编译器,旨在为Python程序员提供接近C/C++的运行速度,而不牺牲语言的易用性。它通过静态编译实现,消除了解释执行的性能瓶颈,支持原生多线程(无全局解释器锁GIL),并且对GPU编程提供了支持。相较于标准的CPython,Codon可以在单线程环境下达到10到100倍以上的速度提升,而且能够与现有Python生态系统无缝交互。 ...

gitblog_00642的博客 1180

18个最佳的 Python 编译器、解释器、加速器

大多数极客认为 Python 是解释性语言,但它也存在编译过程。编译部分在代码执行时完成,并被删除。然后编译内容被转换为字节码。通过机器和操作系统进一步扩展到 Python 虚拟机。本文重点介绍了适用于 Python 程序员的 11 种最佳的 Python 编译器和解释器。

lojloj的博客 4118
上一篇: 高考262分却发4篇SCI论文,脑瘫小伙在985高校「旁听」12年,修完本科到博士所有课程
下一篇: 揭秘ChatGPT背后天价超算!上万颗英伟达A100,烧光微软数亿美元
IT界那些事儿
博客等级 码龄6年 2万+粉丝 22原创
评论 13
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值