写点什么

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

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

关注

评论

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

Open-OAuth2Playground:开箱即用的开源版OAuth2在线调试服务

冯骐

OAuth 2.0 Go 语言 开放平台 API 调试 Playground

vscode GraphQL插件踩坑

林十二XII

解析!1V1直播源码开发搭建技术实时语音识别翻译功能的应用

山东布谷科技

软件开发 直播 源码搭建 一对一直播源码 1v1语音系统搭建

ChatGPT:向未来迈进的智能对话伴侣 | 社区征文

架构精进之路

技术 后端 社区征文 ChatGPT 年中技术盘点

Apache Doris 用户行为分析实践

冰心的小屋

数据仓库 OLAP Doris

2023-07-15:给你一个 非递减 的正整数数组 nums 和整数 K, 判断该数组是否可以被分成一个或几个 长度至少 为 K 的 不相交的递增子序列。 输入:nums = [1,2,2,3,3,

福大大架构师每日一题

Go rust 福大大架构师每日一题

强化学习:基于蒙特卡洛树和策略价值网络的深度强化学习五子棋(含码源)

汀丶人工智能

人工智能 深度学习 蒙特卡洛 强化学习

c++类型转换与RTTI运行阶段类型识别

芯动大师

代码随想录 Day17 - 二叉树(四)

jjn0703

Docker学习路线6:使用第三方镜像

小万哥

Docker 容器 运维 后端 开发

免费试用商业智能工具,帮助您轻松解决商业智能选型问题

对不起该用户已成仙‖

ClickHouse 学习分享

冰心的小屋

OLAP Clickhouse

从头学Java17-今天的Kotlin更香吗

kotlin java17

真正的千万级分布式延迟任务系统 Grape

dinstone

带你走进 IntelliJ IDEA 的插件世界

冰心的小屋

idea plugin

博客重启计划,阿坚产品笔记

Bonaparte

产品 产品经理 产品设计 产品需求 产品定义

PyTorch: 池化-线性-激活函数层

timerring

PyTorch

对线面试官-Redis 九 | 持久化的方式及优缺点

派大星

Java 面试题

AI的“道德感”如何训练而来(1)|社区征文

石君

AIGC 年中技术盘点 人工智能道德

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