50万奖金+官方证书,深圳国际金融科技大赛正式启动,点击报名 了解详情
写点什么

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

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

关注

评论

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

web前端培训如何解决模块依赖复杂度太高的问题

@零度

前端开发

Kafka到底有多高可靠?(RNG NB)

敖丙

kafka Java EE 程序员‘

直播预告丨 Hello HarmonyOS 进阶课程第五课——原子化服务

HarmonyOS开发者

HarmonyOS

善事利器 - 我是如何在药师帮掌店易项目落地 Zadig 的

Zadig

DevOps 云原生 CI/CD

超级马里奥【附源码】

JavaPub

国密在车联网安全认证场景中的应用|车联网系列专题07

EMQ映云科技

车联网 物联网 国密 emqx 5月月更

如何快速解决集群异常和机器性能波动

NebulaGraph

可视化 图数据库 知识图谱

大数据培训数仓实践 Kimball 维度建模

@零度

数仓 大数据开发

英特尔加速创新,唤醒网络及边缘原力

科技之家

Java 实现 植物大战僵尸 小游戏【附源码】

JavaPub

Java

小鸟飞行游戏【附源码】

JavaPub

高危!Fastjson反序列化漏洞风险

源字节1号

软件开发

畅聊安全生产,对话B站、唯品会一线专家!|TakinTalks大咖对谈

TakinTalks稳定性社区

用户体验至上时代,银行的“主动出击”

博睿数据

金融 博睿数据 数据链DNA IT运维

深入解析 TiFlash丨多并发下线程创建、释放的阻塞问题

PingCAP

SAP UI5 自动化测试工具的 qunit-redirect.js

汪子熙

JavaScript 前端开发 SAP Fiori 5月月更

Java 实现 1024 小游戏【附源码】

JavaPub

Java 实现 捕鱼达人 小游戏【附源码】

JavaPub

java培训动态上传jar包热部署实战分享

@零度

JAVA开发

俄罗斯方块【附源码】

JavaPub

吃豆人游戏【附源码】

JavaPub

Java实现一个坦克大战的小游戏【附源码】

JavaPub

企业知识管理难题,现在有了一个好的解决方案

小炮

面试突击52:什么是三范式?它有什么用?

王磊

Java 面试

通过集成腾讯IM来浅尝一下.net 6的MINI API

为自己带盐

.net core 5月月更 mini api

什么是哈希?趣投哈希幸运哈希竞猜游戏开发方案策划

开发微hkkf5566

【LeetCode】最多单词数的发件人Java题解

Albert

LeetCode 5月月更

基于阿里云 ASK 的 Istio 微服务应用部署初探

阿里巴巴云原生

阿里云 容器 微服务 云原生 服务网格

亚信安慧AntDB数据库斩获“最佳数据库品牌”大奖

亚信AntDB数据库

Java实现一个打飞机的小游戏【附源码】

JavaPub

理“ Druid 元数据”之乱

vivo互联网技术

大数据 存储 Druid Apache Druid

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