写点什么

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

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

关注

评论

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

重磅发布 | 3.4K Star可视化神器来啦

百度开发者中心

工具 可视化 #飞桨#

安卓开发在线!Android面试吃透这一篇就没有拿不到的offer!大厂内部资料

欢喜学安卓

android 程序员 面试 移动开发

JDK1.8升级这么久!Stream流的规约操作有哪些?

李尚智

Java 架构 jdk 函数编程

第十一周作业&总结

胡益

架构师week11 作业

Geek_xq

架构师week11总结

Geek_xq

Spring Boot 微服务性能下降九成!使用 Arthas 定位根因

Java架构师迁哥

5分钟让你理解K8S必备架构概念,以及网络模型(上)

大数据 架构

重磅发布 | 2021年OpenAtom XuperChain开源技术路径

百度开发者中心

百度 #区块链#

Kafka消费者提交消费位移时提交的是当前消费到的最新消息的 offset 还是 offset+1?

李尚智

Java kafka 程序员 架构 消息中间件

Kafka在哪些场景下会造成重复消费或消息丢失?

李尚智

Java kafka 程序员 架构 消息中间件

百度亮相全球量子信息处理顶会QIP2021 推动全球量子科技进步

爱极客侠

用 JSX 实现 Carousel 轮播组件

三钻

大前端 组件化 JSX

怎么理解Kafka消费者与消费组之间的关系?

李尚智

Java 大数据 程序员 架构

做了6年的Android,Jetpack-MVVM-高频提问和解答,看看这篇文章吧!

欢喜学安卓

android 程序员 面试 移动开发

开发Kafka消费者客户端需要注意哪些事项?

李尚智

Kafka生产者哪些重要的参数是我们需要注意的?

李尚智

Java kafka 程序员 架构 消息中间件

anyRTC新春大礼包

anyRTC开发者

音视频 WebRTC RTC

🎨 HTTP 协议的前世今生

飞天小牛肉

Java 程序员 面试 计算机网络 2月春节不断更

即构发布 LCEP 产品「RoomKit」 ,实现房间内0代码接入

ZEGO即构

通过配置开关 Spring Boot 中的 @Scheduled 定时任务

和白白

Java 定时任务 springboot

SDS离全面EC(纠删码)还有多远?

XSKY星辰天合

存储

函数式编程Stream接口真的有那么好用吗?

李尚智

Java 程序员 架构

【百度技术分享】San介绍以及在百度APP的实践

百度Geek说

Java JavaScript feed

【得物技术】AB实验设计实现与分流算法

得物技术

算法 AB AB testing实战 实现 得物技术

Clubhouse是个啥?一夜爆火一码难求

架构精进之路

七日更 2月春节不断更 clubhouse

“双循环”下的数字货币棋局

CECBC

数字货币

LeetCode题解:529. 扫雷游戏,BFS,JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

LoraWan的第一个网关与设备

远鹏

物联网 IoT ChirpStack LoraWan

商务部CECBC专委会-商务联络部长王聚师:中医国际化的数字创新密码

CECBC

数字

为什么联盟链系统没有“激励”?

CECBC

区块链

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