写点什么

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

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

关注

评论

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

事业-最佳实践-架构-降低系统复杂度

南山

架构设计 架构设计原则 设计原则 复杂度 系统复杂度

事业-最佳实践-架构-理解软件架构的意义

南山

架构 软件架构

事业-最佳实践-架构-框架选型

南山

框架 技术选型 框架选型

万界星空科技QMS系统如何管理车间产品的质量

万界星空科技

质量管理 万界星空科技 QMS 生产质量

报名倒计时丨职场<火焰杯>测试开发大赛报名仅剩最后3天!

测吧(北京)科技有限公司

测试

赛前辅导 | 职场<火焰杯>测试开发大赛赛前辅导-Web自动化测试

测试人

软件测试

京东面试:如何进行JVM调优?

王磊

Java

事业-最佳实践-架构-泛化建模

南山

领域驱动设计 DDD 领域建模 领域模型 泛化

那些你不得不知的常见接口协议!

测吧(北京)科技有限公司

测试

【深度解析】那些你不得不知的常见接口协议!

测试人

软件测试

即刻职达携手众多企业达成战略合作,共绘人力资源行业创新发展新篇章

新消费日报

LLM 大模型学习必知必会系列(五):数据预处理(Tokenizer分词器)、模板(Template)设计以及LLM技术选型

汀丶人工智能

人工智能 大模型

融云荣获甲子光年「2024 中国 AI 出海服务创新企业」奖

融云 RongCloud

报名倒计时丨职场<火焰杯>测试开发大赛报名仅剩最后3天!

测试人

软件测试

赛前辅导 | 职场<火焰杯>测试开发大赛赛前辅导-Web自动化测试

测吧(北京)科技有限公司

测试

自如开启国际化租房业务布局,中国经验能否复制到全球?

Alter

NFTScan 正式上线 Mint NFTScan 浏览器和 NFT API 数据服务

NFT Research

NFT NFTScan API 文档

企业如何做好 SQL 质量管理?

爱可生开源社区

sql SQL审核 SQLE SQL质量

一文了解npm install -g和npm install --save-dev的关系

华为云开发者联盟

JavaScript 前端 华为云 华为云开发者联盟 企业号2024年5月PK榜

低代码赋能!让传统工业企业重新夺回数字化转型主动权!

优秀

低代码 数字化转型 工业数字化

【FAQ】HarmonyOS SDK 闭源开放能力 —Map Kit(2)

HarmonyOS SDK

HarmonyOS

实战指南:API 集成测试详解

Apifox

测试 后端 集成测试 API 测试工具

如何用ByteHouse,实现金融场景下的精准营销

极客天地

一键自动化博客发布工具,用过的人都说好(头条篇)

程序那些事

工具 程序那些事 自动发布

MySQL 社区经理:MySQL 8.4 InnoDB 参数默认值为什么要这么改?

爱可生开源社区

MySQL 新特性 MySQL 8.4

百度文库行业首发「智能画本」功能,跨模态AI内容创作行业领先

极客天地

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