温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

如何分析Python 3.9 性能优化中的vectorcall

发布时间:2021-12-09 09:23:37 来源:亿速云 阅读:221 作者:柒染 栏目:大数据

如何分析Python 3.9 性能优化中的vectorcall,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

Python 的 3.9.0 版本正在开发中,计划在 2020-10-05 发布final版本。

官方在 changelog 中披露了很多细节,其中有一项“vectorcall”特性是最容易被接受的。

事实上,早在 Python 3.8 版本中就已部分地实现了 vectorcall,只不过它是暂时性的,被隐藏起来了,按计划是在 3.9 版本中实现完全体。下图是 3.8 版本中的简介:

如何分析Python 3.9 性能优化中的vectorcall  

那么,什么是 vectorcall 呢?它会带来哪些变化呢?

“a fast calling protocol for CPython”,即它是 CPython 的一种快速调用协议,可以加速 CPython 解释器在调用类对象时的速度。

(PS:需要注意的是,这里说的“协议”是一种广义的称呼,它跟我们熟知的网络协议或通信协议不同,可理解为对代码作调用时的一种约定、一种实现方式)

这种协议是在 PEP-590 中被提出的(时间是 2019-03-29),对应的 bpo 是 issue37207,历时近一年的开发,目前它的实现已合入了代码仓。

如何分析Python 3.9 性能优化中的vectorcall

用一句话概括它的核心要点是:它将提升 list()、tuple()、dict() 等主要类型的调用速度,同时它还可以被用在自定义的类上。

结合 PEP 与 bpo 信息,我提炼了以下的详细要点:
  • vectorcall 是对 fastcall 的正式化。在之前的 CPython 中存在一些零散的优化点(即 fastcall),如今官方把它们系统化了,给出了一个正式的“vectorcall”称呼。

  • vectorcall 适用于多数内置类型。据当前的披露信息,它适用于 list、tuple、dict、set、frozenset 与 range 这 6 种主要的内置类型(部分测量数据显示,速度提升率达 10%~30%)。

  • vectorcall 是对性能与灵活性的调和。之前的解释器具有很高的灵活性,但是在对象调用过程中,存在不必要的中间对象以及间接的调用开销,如今是设法消除了这部分开销,得以提升了性能。

看完上述内容,你们掌握如何分析Python 3.9 性能优化中的vectorcall的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注亿速云行业资讯频道,感谢各位的阅读!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI