Python 3.12 目標(biāo):還可以更快!

按照發(fā)布計(jì)劃,Python 3.11.0 將于 2022 年 10 月 24 日發(fā)布。

我們提供的服務(wù)有:成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè)、微信公眾號(hào)開(kāi)發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、博愛(ài)ssl等。為上1000+企事業(yè)單位解決了網(wǎng)站和推廣的問(wèn)題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的博愛(ài)網(wǎng)站制作公司

據(jù)測(cè)試,3.11 相比于 3.10,將會(huì)有 10-60% 的性能提升,這個(gè)成果主要?dú)w功于“Faster CPython”項(xiàng)目,即“香農(nóng)計(jì)劃”。

關(guān)于“香農(nóng)計(jì)劃”的詳情,可查看 Python 之父的主題分享,以及他的一則播客訪談。

3.11 版本為 Python 的提速開(kāi)了一個(gè)激動(dòng)人心的好頭。接下來(lái),3.12 還會(huì)有更多動(dòng)作。

以下文章翻譯自“香農(nóng)計(jì)劃”的《Python 3.12 Goals》,大家先一睹為快吧!

作者:Mark Shannon

譯者:豌豆花下貓@Python貓

英文:https://github.com/faster-cpython/ideas/wiki/Python-3.12-Goals

本文內(nèi)容可能會(huì)改動(dòng),以實(shí)際版本為準(zhǔn)!

本文是 Faster CPython 計(jì)劃在 3.12 中實(shí)現(xiàn)的主要內(nèi)容的概要。

跟蹤優(yōu)化器

Python 3.11 提升速度的主要方法是用更快的與上下文相關(guān)的操作碼(自適應(yīng)的專門化操作碼)替換個(gè)別的操作碼,下一個(gè)大的改進(jìn)方法是優(yōu)化多個(gè)操作碼的運(yùn)行。

為此,現(xiàn)有的許多高級(jí)操作碼將被替換成低級(jí)操作碼,例如,用于檢查版本號(hào)和引用計(jì)數(shù)的操作碼。這些更簡(jiǎn)單的操作碼更容易進(jìn)行優(yōu)化,例如,可以刪除冗余的引用計(jì)數(shù)操作。

這些更底層的操作碼還能讓我們得到一組適合用于生成機(jī)器代碼的指令(在 CPython 和第三方 JIT 項(xiàng)目中都適用)。

為了做到這點(diǎn),解釋器循環(huán)(interpreter loop)將基于聲明性的描述而生成。

這可減少一部分為了保持解釋器循環(huán)與某些相關(guān)函數(shù)同步而產(chǎn)生的 bug(mark_stacks、stack_effect 等函數(shù)),同時(shí)也讓我們可以對(duì)解釋器循環(huán)作較大的更改試驗(yàn)。

多線程并行

Python 當(dāng)前每個(gè)進(jìn)程有一個(gè)全局解釋器鎖(GIL),阻礙了多線程的并行。

PEP-684:https://peps.python.org/pep-0684

PEP-554:https://peps.python.org/pep-0554

PEP-684 提出了一個(gè)方案,即保證所有的全局狀態(tài)都是線程安全的,并移動(dòng)到每個(gè)子解釋器的全局解釋器鎖中使用。

PEP-554 提出了讓 Python 創(chuàng)建子解釋器的方案(目前只是一個(gè) C API 特性),從而實(shí)現(xiàn)真正的多線程并行。

Python貓注:PEP-554 早在 2017 年就提出了,目標(biāo)是落地在 Python 3.8-3.9 版本,然而事與愿違。早在 2019 年的時(shí)候,我還翻譯了一篇《Has the Python GIL been slain?》。屠刀已揮出,讓它再飛一會(huì)~~

更多專門化

我們分析了哪些字節(jié)碼將從專門化中獲益最多,計(jì)劃在 3.12 完成其余的高收益的改進(jìn)。

https://github.com/faster-cpython/ideas/issues/74

較小的對(duì)象結(jié)構(gòu)

有許多可以減少 Python 對(duì)象結(jié)構(gòu)大小的機(jī)會(huì)。由于它們被頻繁使用,這不僅有利于總體的內(nèi)存使用,還有利于緩存的一致性。我們計(jì)劃在 3.12 中實(shí)現(xiàn)最有希望的一些想法。

這里有一些向后兼容性與性能之間的權(quán)衡問(wèn)題,可能需要提出一個(gè) PEP 來(lái)建立共識(shí)。

減少內(nèi)存管理的開(kāi)銷

我們不僅會(huì)減小對(duì)象的大小,還會(huì)使它們的 layout 更加規(guī)則。

這不僅能優(yōu)化內(nèi)存的分配及釋放,還能在 GC 和重新分配期間加快遍歷對(duì)象的速度。

API 穩(wěn)定性

除了前述項(xiàng)目外,開(kāi)發(fā)團(tuán)隊(duì)還將提升 CPython 代碼庫(kù)的整體質(zhì)量:

  • 通過(guò)減少不同編譯階段的耦合,使編譯器更易于維護(hù)與測(cè)試。
  • 積極地在 C 語(yǔ)言級(jí)別監(jiān)控和改進(jìn) CPython 測(cè)試套的代碼覆蓋率。
  • 改進(jìn) Python 性能基準(zhǔn)測(cè)試套,加入更具代表性的現(xiàn)實(shí)世界的負(fù)載測(cè)試。
  • 協(xié)助處理 CPython 問(wèn)題和 PR,特別是與性能有關(guān)的問(wèn)題。
  • 增加用于標(biāo)準(zhǔn)基準(zhǔn)測(cè)試的機(jī)器,增加 macOS 和 Windows 的測(cè)試結(jié)果。
  • 繼續(xù)跟主要的深度使用 Python 內(nèi)核的項(xiàng)目合作,幫助它們適配 CPython 解釋器的更改。

注:文中圖片為譯者所加。

首發(fā)于 Python貓 ,如需轉(zhuǎn)載,請(qǐng)聯(lián)系作者

知乎:Python貓

博客園:豌豆花下貓

掘金:豌豆花下貓

CSDN:Python貓

網(wǎng)頁(yè)名稱:Python 3.12 目標(biāo):還可以更快!
網(wǎng)頁(yè)URL:http://m.kartarina.com/article38/dsogcpp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供營(yíng)銷型網(wǎng)站建設(shè)品牌網(wǎng)站建設(shè)App設(shè)計(jì)外貿(mào)網(wǎng)站建設(shè)網(wǎng)站內(nèi)鏈網(wǎng)站導(dǎo)航

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

網(wǎng)站建設(shè)網(wǎng)站維護(hù)公司
主站蜘蛛池模板: 亚洲国产成人精品无码区在线网站| 无码专区6080yy国产电影| 免费人成无码大片在线观看 | 久久亚洲精品中文字幕无码| 成在人线av无码免费高潮喷水| 精品亚洲成A人无码成A在线观看 | 尤物永久免费AV无码网站| 亚洲午夜无码久久久久| 无码人妻精品一区二区三区蜜桃 | 中文字幕有码无码AV| 亚洲最大中文字幕无码网站| 潮喷无码正在播放| 国产强被迫伦姧在线观看无码| 亚洲Av无码精品色午夜| 亚洲高清无码综合性爱视频| 亚洲heyzo专区无码综合| 久久精品无码精品免费专区| 无码精品久久一区二区三区| 男人av无码天堂| 久久久久久精品无码人妻| 国产aⅴ无码专区亚洲av| r级无码视频在线观看| 日韩免费无码一区二区视频| 精品国产一区二区三区无码| 国产AⅤ无码专区亚洲AV| 亚洲成a人无码av波多野按摩| 久久亚洲中文无码咪咪爱| 亚洲午夜成人精品无码色欲| 亚洲AV无码一区二区三区人| 久久久久亚洲AV无码观看| 午夜无码伦费影视在线观看| 国产成人精品无码一区二区| 亚洲综合av永久无码精品一区二区 | 国产成人无码免费看片软件 | 午夜福利无码一区二区| 亚洲AV成人噜噜无码网站| 亚洲人成无码网站在线观看| 91精品无码久久久久久五月天| 寂寞少妇做spa按摩无码| 亚洲av永久无码精品网站 | 少妇精品无码一区二区三区 |