写点什么

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:002893
用户头像

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

关注

评论

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

银行热衷拿区块链专利 背后有何意图

CECBC

区块链 银行

有益思考一则:框架性思维

石君

学习 方法论

ArCall 升级丨新增多项功能,可支持多人在线语音

anyRTC开发者

音视频 WebRTC 直播 RTC

架构师第十一周作业及总结

傻傻的帅

Spring系列篇:Spring容器基本使用及原理

简爱W

云算力挖矿平台APP,一站式云算力挖矿系统开发

13530558032

第11周作业

赵龙

第11周学习总结

赵龙

架构师训练营第11周作业

Bruce Xiong

游戏夜读 | 什么才值得纪念?

game1night

第二周作业

Vincent

极客时间 作业

开源流数据公司 StreamNative 推出 Pulsar 云服务,推进企业“流优先”进程

Apache Pulsar

Apache Pulsar 消息系统 消息中间件

区块链数字钱包定制开发,数字货币钱包开发费用

13530558032

沟通是一门艺术

石云升

情绪控制 沟通艺术

一起学MySQL性能优化

xcbeyond

MySQL 性能优化 MySQL性能优化

微服务编程范式

看山

微服务 范式 签约计划第二季

悬挂引用是如何被Rust消灭的?

袁承兴

rust 内存模型 指针 引用 泛型

跨过语言银河,构筑智能鹊桥:百度NLP的十年、今夕与未来

脑极体

架构师训练营第十一周作业

张明森

一次开零售店的经历(2)

石云升

零售店

Apache 软件基金会顶级项目 Pulsar 达成新里程碑:全球贡献者超 300 位!

Apache Pulsar

Apache Apache Pulsar 消息系统 消息中间件

架构师训练营第十一周总结

张明森

永续合约交易系统源码开发,合约交易所开发

13530558032

论商品促销代码的优雅性

架构师修行之路

架构师训练营 -- 第11周作业

stardust20

微服务的基建工作

看山

微服务 基础设施 签约计划第二季

第二周学习总结

Vincent

极客时间 极客大学 作业

安全系列之——主流Hash散列算法介绍和使用

诸葛小猿

hash 散列函数 md5 sha1 murmurhash

区块链承兑商支付系统开发,USDT支付软件搭建

13530558032

一次开零售店的经历(1)

石云升

零售店

智能化转型将加速数字经济变革

CECBC

人工智能 数字经济

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