社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

炸裂!让Python和C一样快,MIT推出新编译器,训练大数据集可提速5-10倍

大数据文摘 • 1 年前 • 412 次点击  

大数据文摘出品


Python太慢了!


除了这个缺点,Python可以说是有无数个优点,但就是这个缺点,让无数程序员吐槽不已。


现在,麻省理工学院计算机科学与人工智能实验室(CSAIL)的研究人员希望通过一个新的编译器来改变这种状况——Codon


Codon 是一个新的基于 Python 的编译器,能让用户编写的 Python 代码,运行效率与 C 或 C++ 程序相当。


这很香了。


装上了涡轮增压的 Python


Python 的主要优势在于语法简单易学,这样许多非专业程序员也能体会到编码带来的乐趣。


“我们意识到,人们不一定想学习一门新语言或一种新工具,尤其是那些非技术人员。所以我们想,让我们把 Python 语法、语义和库合并到一个从头开始构建的新系统中。”Ariya Shajii  Codon 的新论文的主要作者。


这篇论文被发表在了第32届 ACM SIGPLAN 编译器构造国际会议上。



论文地址:
https://dl.acm.org/doi/abs/10.1145/3578360.3580275


不像 C 和 C + + 这样的语言都带有一个编译器来优化生成的代码以提高性能,Python 是一个直译语言。为了让 Python 变得更快,人们付出了很多努力,研究小组说,这种方法通常采用“自上向下的方法”,即采用普通的 Python 实现,并结合各种优化或“即时”编译技术(一种在执行过程中编译对性能至关重要的代码片段的方法)。这些方法擅长于保持向后兼容性,但是这种方法也极大地限制了可以获得的加速种类。


Codon 则采取了更多的自下而上的方法,从头开始实施所有的东西,虽然有一些限制,但是更加灵活。


例如,Codon 虽然不能支持某些动态特性,但是可以使用优化和其他静态编译技术,这些技术从标准的 Python 优化流程开始就无法实现。



之前都没人做,难点在哪?


第一个难点就在于运行前的类型检查。


编译器执行的第一个关键步骤之一称为“类型检查”,即在程序中计算每个变量或函数的不同数据类型的过程。例如,一些可以是整数,一些可以是字符串,还有一些可以是浮点数ーー这是常规 Python 不会去做的。在普通的 Python 中,在运行程序时必须处理所有这些信息,这是使其运行速度如此之慢的因素之一。


Codon 的的解决方法在于,在运行程序之前进行类型检查。这允许编译器将代码转换为本机代码,从而避免了 Python 在运行时处理数据类型的所有消耗。


第二个难点在于编译器中的优化。


举个例子,如何使用插件实现一组特定于该某计算领域的优化?比如使用涉及到使用基因组序列和其他生物学数据的基因组学库。


Codon 的方法是生成一个可执行文件——让其以 C 或 C + + 的速度运行,甚至一旦应用了特定于领域的优化,运行速度甚至更快。


Codon 目前涵盖了 Python 的一个相当大的子集,不过它仍然需要合并几个动态特性,并扩大其 Python 库的覆盖范围。Codon 团队正在努力进一步缩小与 Python 的差距,并期待在未来几个月内发布几个新特性。Codon 目前在 GitHub 上公开可用。


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



研究小组对密码顿进行了严格的测试,结果证明它超出了预期。


具体来说,他们采用了大约10个用 Python 编写的常用基因组学应用程序,并使用 Codon 编译它们,实现了比原始手工优化实现快5到10倍的速度。



除了基因组学,他们还探索了定量金融的应用,定量金融同样也需要也处理大数据集,并大量使用 Python,效果也非常显著。


同时,Codon平台还有一个并行后端,可以让用户编写可以明确编译为 GPU 或多核并行的Python 代码,而这些任务传统上需要一定的编程专业知识。


相关报道:
https://www.csail.mit.edu/news/python-based-compiler-achieves-orders-magnitude-speedups
https://dl.acm.org/doi/abs/10.1145/3578360.3580275
https://spectrum.ieee.org/python-compiler


点「在看」的人都变好看了哦!

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/153383
 
412 次点击