| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> Python知识库 -> Python 3.12 目标:还可以更快! -> 正文阅读 |
|
[Python知识库]Python 3.12 目标:还可以更快! |
按照发布计划,Python 3.11.0 将于 2022 年 10 月 24 日发布。 据测试,3.11 相比于 3.10,将会有 10-60% 的性能提升,这个成果主要归功于“Faster CPython”项目,即“香农计划”。 关于“香农计划”的详情,可查看 Python 之父的主题分享,以及他的一则播客访谈。 3.11 版本为 Python 的提速开了一个激动人心的好头。接下来,3.12 还会有更多动作。 以下文章翻译自“香农计划”的《Python 3.12 Goals》,大家先一睹为快吧!
本文内容可能会改动,以实际版本为准! 本文是 Faster CPython 计划在 3.12 中实现的主要内容的概要。 跟踪优化器Python 3.11 提升速度的主要方法是用更快的与上下文相关的操作码(自适应的专门化操作码)替换个别的操作码,下一个大的改进方法是优化多个操作码的运行。 为此,现有的许多高级操作码将被替换成低级操作码,例如,用于检查版本号和引用计数的操作码。这些更简单的操作码更容易进行优化,例如,可以删除冗余的引用计数操作。 这些更底层的操作码还能让我们得到一组适合用于生成机器代码的指令(在 CPython 和第三方 JIT 项目中都适用)。 为了做到这点,解释器循环(interpreter loop)将基于声明性的描述而生成。 这可减少一部分为了保持解释器循环与某些相关函数同步而产生的 bug(mark_stacks、stack_effect 等函数),同时也让我们可以对解释器循环作较大的更改试验。 多线程并行Python 当前每个进程有一个全局解释器锁(GIL),阻碍了多线程的并行。
PEP-684 提出了一个方案,即保证所有的全局状态都是线程安全的,并移动到每个子解释器的全局解释器锁中使用。 PEP-554 提出了让 Python 创建子解释器的方案(目前只是一个 C API 特性),从而实现真正的多线程并行。
更多专门化我们分析了哪些字节码将从专门化中获益最多,计划在 3.12 完成其余的高收益的改进。
较小的对象结构有许多可以减少 Python 对象结构大小的机会。由于它们被频繁使用,这不仅有利于总体的内存使用,还有利于缓存的一致性。我们计划在 3.12 中实现最有希望的一些想法。 这里有一些向后兼容性与性能之间的权衡问题,可能需要提出一个 PEP 来建立共识。 减少内存管理的开销我们不仅会减小对象的大小,还会使它们的 layout 更加规则。 这不仅能优化内存的分配及释放,还能在 GC 和重新分配期间加快遍历对象的速度。 API 稳定性除了前述项目外,开发团队还将提升 CPython 代码库的整体质量:
注:文中图片为译者所加。 首发于 Python猫 ,如需转载,请联系作者 知乎:Python猫 博客园:豌豆花下猫 掘金:豌豆花下猫 CSDN:Python猫 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/19 19:27:43- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |