当前位置:首页 > 技术分析 > 正文内容

Python 速度提升 10 到 100 倍 —— 麻省理工为 Python 实现类 C 性能

ruisui883个月前 (02-03)技术分析20

Python 是一种流行的编程语言,但它通常不是高速应用程序的首选。然而,麻省理工学院的计算机科学家和他们的同事开发了一种名为 Codon 的 Python 编译器,它可以将 Python 代码转换为本机机器代码,而不会牺牲运行时性能。

使用 Codon 可以使得 Python 加速在单个线程上大约为 10-100 倍或更多,并且 Codon 的性能通常与 C/C++ 相当或更好。Codon 通过依赖静态类型编译器引擎并省略动态类型操作和运行时反射等使代码更难以分析和优化的功能来实现这一点。

测试

那么,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 编译

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

最终,发现使用 Codon 编译的简单 Fibonacci 脚本比 CPython 版本快 70 多倍

Codon 已在 GitHub 上开源,地址如下:

https://github.com/exaloop/codon

概述

Codon 最初是作为在 Python 中创建高性能领域特定语言 (DSL) 的框架而开发的,现已发展成为一种与 Python 3 基本兼容的语言编译器。该工具链支持开发 DSL,这些 DSL 与添加的领域共享 Python 的语法和语义-特定功能和 IR 优化。由于 Codon 可以在没有任何 Python 运行时开销的情况下输出本机机器代码,因此该论文的作者声称他们可以使用 Python 脚本实现类似 C 的性能。

Codon 还可以显着加速标准 Python 程序,尽管那些依赖外部库(如 Django 或 DocUtils)的程序必须依赖 CPython 桥,该桥将性能限制为 CPython。尽管如此,Codon 正在商业上用于从量化金融和生物信息学到深度学习等领域,其开发人员计划在未来几个月内实现缺失的 Python 功能。

扫描二维码推送至手机访问。

版权声明:本文由ruisui88发布,如需转载请注明出处。

本文链接:http://www.ruisui88.com/post/1225.html

标签: pypy3
分享给朋友:

“Python 速度提升 10 到 100 倍 —— 麻省理工为 Python 实现类 C 性能” 的相关文章

适合旧电脑2022年值得推荐的 10 款轻量级 Linux 发行版

推荐 10 款轻量级Linux 发行版,它们是 2022 年的轻量级、对旧硬件友好的 Linux 发行版。1、Linux LiteLinux Lite 是一款基于#ubuntu# 和 Debian 的、正在不断开发和完善的 Linux 发行版,极好看的 Xfce 桌面,并基于 Ubuntu,采用了...

html5+css3做的响应式企业网站前端源码

大家好,今天给大家介绍一款,html5+css3做的响应式企业网站前端源码 (图1)。送给大家哦,获取方式在本文末尾。首页banner幻灯片切换特效(图2)首页布局简约合理(图3)关于我们页面(图4)商品列表(图5)商品详情(图6)服务介绍(图7)新闻列表(图8)联系我们(图9)源码完整,需要的朋友...

数组、去重、排序、合并、过滤、删除

ES6数字去重 Array.from(new Set([1,2,3,3,4,4])) //[1,2,3,4] [...new Set([1,2,3,3,4,4])] //[1,2,3,4]2、ES6数字排序 [1,2,3,4].sort(); // [1, 2,3,4],默认是升序...

VUE 技术栈

官网链接:https://cn.vuejs.org/什么是vue:渐进式JavaScript 框架vue-cli链接:https://cli.vuejs.org/vue-cli安装:npm install -g @vue/clivue -V创建一个项目:vue create xxxxxx模版语法:文...

推荐一个Java微服务商业级Sass开源电商小程序(开源,企业级项目)

使用Java微服务开发,SpringBoot2框架、MyBatis-plus持久层框架、Redis作为缓存、MySql8作为数据库。 前端vuejs作为开发语言,使用uniapp编码,同时支持微信小程序、安卓App、苹果App。 支持集群部署,单机部署。 unimall 针对中小商户、企业和个人消...

Alpine.js 如何火起来的!比 React/Vue 如何?

大家好,很高兴又见面了,我是"高级前端?进阶?",由我带着大家一起关注前端前沿、深入前端底层技术,大家一起进步,也欢迎大家关注、点赞、收藏、转发!前言前端 JavaScript 框架的创新是这个时代最伟大的技术文化现象之一。Alpine 发音为 /??lpa?n/,中文为阿尔卑斯山、...