BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

Python JIT编译器PyPy 4引入SMD向量化并提升了性能

| 作者 Sergio De Simone 关注 14 他的粉丝 ,译者 适兕 关注 0 他的粉丝 发布于 2015年11月11日. 估计阅读时间: 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读者交流群InfoQ好读者)。

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT