硬核干货——《中小企业 AI 实战指南》免费下载! 了解详情
写点什么

Python JIT 编译器 PyPy 4 引入 SMD 向量化并提升了性能

  • 2015-11-10
  • 本文字数:848 字

    阅读完需:约 3 分钟

PyPy 是 Python 的一个即时编译器,PyPy 4.0 是其最新发布的一个大版本,带来很多新的特性,诸如支持 SIMD 矢量、预热时间的改进、以及对 Numpy 的改进。PyPy声称要比Cpython 快6 倍以上。

PyPy 4 的 SIMD 矢量会在追踪代码时启用,而且会自动探测到可用的 SIMD 硬件从而提高常见的向量和矩阵操作。根据版本的公告,实时矢量相比前置(ahead-of-time)矢量更具有领先优势,因为其更加的容易探测到可能的矢量。

在性能方面,PyPy 的内部进行重构从而能够更有效的使用 guards 。它能够减少 20% 的内存消耗,而且改进了 unrolling,这样可以较少 20% 的预热时间。

PyPy 中的 Numpy 和 Python 的 NumPy 扩展是一个道理。Python 的 NumPy 曾经谈及,NumPy 是能够将使用PyPy 的开发者们纠回到Python 本身的一个理由。在PyPy 4.0,Numpy 带来了新的扩展支持,如ndarray 和数字的dtypes,这也就意味着Numpy 的功能接近完善。对于record、string、以及unicode dtypes 的支持都有所改进。

PyPy 4.0 目的是兼容 CPython2.7。对于缺少对 Python3 的支持被认为是人们采用PyPy 的一个限制因素。事实上,PyPy3 是兼容Python3.2.5 的,而且PyPy 团队正在尝试启动对Python3.4 的支持。

在迁移到PyPy 之前还应该考虑另外两个因素,一个是PyPy 还缺乏像C Python 那样的扩展如Pandas,SciPy 等的等量支持,这样的话,若是用户使用了这些扩展的话,PyPy 就不如C Python 效率更高;另外一个就是,PyPy 为其即时编译器带来的好处是对长时间运行的脚本支持,若是简单而短小的脚本的话,预热时间就显得长了点。

更多关于PyPy 4.0 的细节请参考其官方声明。PyPy 4 可以在这里下载

查看英文原文: Python JIT Compiler PyPy 4 Brings SMD Vectorization,Performance Improvements,and More


感谢张龙对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们,并与我们的编辑和其他读者朋友交流(欢迎加入 InfoQ 读者交流群)。

2015-11-10 18:003159
用户头像

发布了 30 篇内容, 共 12.6 次阅读, 收获喜欢 0 次。

关注

评论

发布
暂无评论
发现更多内容

C++学习---类型萃取---is_pointer && is_lvalue_reference/is_rvalue_reference

桑榆

C++ STL 11月月更

Gradle入门了解

派大星

Gradle

EasyRcovery2023绿色免费版U盘数据恢复软件

茶色酒

EasyRcovery2023

React源码解读之React Fiber

flyzz177

React

规则引擎Drools在贷后催收业务中的应用

vivo互联网技术

drools 规则引擎

2023年 DevOps 七大趋势

SEAL安全

三分钟了解client-go

穿过生命散发芬芳

Client-go 11月月更

一文熟悉 Go 函数

陈明勇

Go golang 闭包 函数 11月月更

python任务调度利器-APScheduler

AIWeker

Python 任务调度 11月月更

【web 开发基础】PHP的匿名函数和闭包 (40)

迷彩

闭包 closure web开发基础 匿名函数 11月月更

Python基础库-json库

度假的小鱼

11月月更 Python操作json json语法规则

React源码解读之更新的创建

flyzz177

React

性能测试知识科普(七):监控能给你带来什么

老张

性能测试 监控指标

【React技术】JSX在企业级项目的运用and一个元素渲染demo

恒山其若陋兮

前端 11月月更

CDH5部署三部曲之三:问题总结

程序员欣宸

大数据 hadoop CDH 11月月更

React源码分析2-深入理解fiber

goClient1992

React

CrossOver2023免费版虚拟机软件安装包下载

茶色酒

CrossOver2023

盘点入职时,那些常见但不合规的操作

石云升

职场 入职 11月月更

React源码解读之任务调度

flyzz177

React

极客时间运维进阶训练营第五周作业

独钓寒江

关于部署策略的遐思

在天涯的海角

Python操作XML文件

度假的小鱼

11月月更 Python操作xml xml与html区别

JXcore 打包在企业级项目里的合理运用和模块系统以及网络的配置详解【node.js】

恒山其若陋兮

前端 11月月更

React源码分析3-render阶段(穿插scheduler和reconciler)

goClient1992

React

React源码分析1-jsx转换及React.createElement

goClient1992

React

Python 操作BeautifulSoup4(爬取网页信息)

度假的小鱼

正则 11月月更 Python BeautifulSoup4

我们为什么喜欢看疯狂科学家开飞艇?

脑极体

「Go工具箱」gorilla/sessions包的使用及原理分析

Go学堂

golang 深度思考 个人成长 Web 11月月更

信息论与编码:随参信道特性

timerring

11月月更 信息论 移动通信

DDD与EDA-核心逻辑提炼方法论

胖子笑西风

Java 架构 DDD 事件驱动 EDA

Python JIT编译器PyPy 4引入SMD向量化并提升了性能_Python_Sergio De Simone_InfoQ精选文章