写点什么

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

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

关注

评论

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

一起学习 Go 语言设计模式之设计模式概述

宇宙之一粟

设计模式 Go 语言 10月月更

Glibc---_IO_file_xsputn函数逻辑分析

桑榆

源码刨析 10月月更 C++

“程”风破浪的开发者|区块链与Web3.0辨析

timerring

区块链 Web3.0 10月月更 “程”风破浪的开发者 Web2.0

Spring Boot「11」查看所有托管的 Bean

Samson

Java spring 学习笔记 spring-boot 10月月更

一款轻巧快速的跨平台文档阅读器!

Jackpop

“程”风破浪的开发者|元宇宙?Are you Sure?

六月的雨在InfoQ

虚拟世界 平行世界 元宇宙 10月月更 “程”风破浪的开发者

云计算商业周期超过其他产业,技术的天花板是商业机遇

B Impact

阿里云无影向RPA开闸,金智维、影刀、弘玑已落地|生态商机

B Impact

“程”风破浪的开发者 | 基建及团队建设的方法论

甜点cc

团队管理 学习方法 基建 “程”风破浪的开发者

Centos7最小安装配置 | 运维 | Linux

Appleex

Linux 运维

2022-10-22:以下go语言代码输出什么?A:moonfdd1;B:编译错误;C:运行时 panic。 package main import “fmt“ func main() {

福大大架构师每日一题

golang 福大大 选择题

中东地区被低估,沙特偏好企业服务和云,新加坡稳定,东南亚复杂|出海

B Impact

消息推送渠道那么多,该怎么设计消息中心?

产品海豚湾

产品经理 产品设计 消息系统 产品架构 10月月更

Docker | 网络及原理探究

甜点cc

Docker 运维 10月月更

Excel 文件的读取

芯动大师

学习方法 Python Monad Excel数据分析

AfterShip 国际化获客冷启动经验:痛点、借力、连接

B Impact

spring整合mybatis、springMVC(总结)

Studying_swz

spring 10月月更

开源免费!自己动手撸一个在线云盘!

Jackpop

在平面国生活,会是怎样的体验?

脑极体

人工智能

2022年都快结束了,Java的这些新技术、热门技术,你不会还不知道吧?

wljslmz

Java 微服务 后端 10月月更 jdk19

高逼格!程序员专属音乐播。。。

Jackpop

开发者神器,代码文档终于有救了

Jackpop

ZooKeeper应用案例

穿过生命散发芬芳

zookeeper 10月月更

再聊加班的感受

李印

成长感悟

golang中的字符串

六月的

golang 字符串

Spring Boot概述(一)

Studying_swz

10月月更

【kubernetes技术专题】Kubernetes架构分析介绍篇(进阶篇)

洛神灬殇

Kubernetes 10月月更

【Java深入学习】一个经典问题-消费者和生产者问题-下

Geek_65222d

10月月更

测试需求平台6-数据持久化与PyMySQL使用

MegaQi

Python 10月月更 测试开发实战

Docker | 网络模型以及容器通信

甜点cc

Docker 运维 10月月更

私有云建设思路

阿泽🧸

私有云 10月月更

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