NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

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

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

关注

评论

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

牛!阿里巴巴首推的《Java进阶必备宝典》,从理论到实战

Java 程序员 后端

泪目!跳槽太不容易了,美团4轮面试,四个小时灵魂拷问,结局我哭了!

Java 程序员 后端

浅谈Java开发规范与开发细节(下)

Java 程序员 后端

深入理解JAVA虚拟机原理之Dalvik虚拟机(三)

Java 程序员 后端

爱了,在GitHub超火的Java程序性能优化实战笔记,实在太香!

Java 程序员 后端

独角兽余额宝(Java现场面试48题):性能调优+索引+Mysql+缓存

Java 程序员 后端

深入浅出MySQL - MyISAM有趣的那些“锁”事儿

Java 程序员 后端

深入理解MySQL索引

Java 程序员 后端

清幽现云山,虚静出内功。阿里《Java开发手册》最新嵩山版发布

Java 程序员 后端

源码分析Dubbo 泛化调用与泛化实现原理

Java 程序员 后端

牛逼,这2招,彻底让你和 null say 拜拜

Java 程序员 后端

浅谈(chain of responsibility)责任链模式

Java 程序员 后端

消息中间件

Java 程序员 后端

渣本Java开发小伙如何一步步成为架构师?回首看来,每一步都不容易

Java 程序员 后端

牛皮!华为工程师总结的Java生态知识体系面试必看笔记,太秀了

Java 程序员 后端

深入理解什么是端口(port)

Java 程序员 后端

源码分析ElasticJob选主实现原理

Java 程序员 后端

漫谈一条SQL语句的一生

Java 程序员 后端

浅谈分布式事务

Java 程序员 后端

测试用例的设计方法及案例

Java 程序员 后端

消息发送常见错误与解决方案

Java 程序员 后端

深入理解Java类加载器(一):Java类加载原理解析

Java 程序员 后端

源码分析Dubbo服务消费端启动流程

Java 程序员 后端

深入学习Kafka数据消费大致流程(如何创建并使用Kafka消费者)

Java 程序员 后端

深入理解Java String类

Java 程序员 后端

玩转互联网公司面试!快手、爱奇艺、小红书等14家互联网企业面经分享!

Java 程序员 后端

淦!阿里限产新一代微服务+K8S+容器进阶笔记,实战理论满满

Java 程序员 后端

深入理解JAVA虚拟机原理之内存分配策略(二)

Java 程序员 后端

渣本Java开发小伙如何一步步成为架构师?回首看来,每一步都不容易(1)

Java 程序员 后端

牛批!Java集合框架面试题精华集(2020最新版),附PDF版

Java 程序员 后端

浅谈物联网开发最热协议—MQTT协议

Java 程序员 后端

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