<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

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

          共 1798字,需瀏覽 4分鐘

           ·

          2022-10-20 01:37

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

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

          3.11 版本為 Python 的提速開了一個激動人心的好頭。接下來,3.12 還會有更多動作。

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

          作者:Mark Shannon

          譯者:豌豆花下貓@Python貓

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

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

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

          跟蹤優(yōu)化器

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

          為此,現(xiàn)有的許多高級操作碼將被替換成低級操作碼,例如,用于檢查版本號和引用計數(shù)的操作碼。這些更簡單的操作碼更容易進(jìn)行優(yōu)化,例如,可以刪除冗余的引用計數(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ù)),同時也讓我們可以對解釋器循環(huán)作較大的更改試驗(yàn)。

          多線程并行

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

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

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

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

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

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

          更多專門化

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

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

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

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

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

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

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

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

          API 穩(wěn)定性

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

          • 通過減少不同編譯階段的耦合,使編譯器更易于維護(hù)與測試。

          • 積極地在 C 語言級別監(jiān)控和改進(jìn) CPython 測試套的代碼覆蓋率。

          • 改進(jìn) Python 性能基準(zhǔn)測試套,加入更具代表性的現(xiàn)實(shí)世界的負(fù)載測試。

          • 協(xié)助處理 CPython 問題和 PR,特別是與性能有關(guān)的問題。

          • 增加用于標(biāo)準(zhǔn)基準(zhǔn)測試的機(jī)器,增加 macOS 和 Windows 的測試結(jié)果。

          • 繼續(xù)跟主要的深度使用 Python 內(nèi)核的項(xiàng)目合作,幫助它們適配 CPython 解釋器的更改。


          Wang
          Qi
          Tui
          Jian

          1、一個整數(shù)+1,攻破了Linux內(nèi)核!

          2、因使用率低,谷歌翻譯退出中國市場!

          3、手機(jī)還卡?老手機(jī)救星!游戲火力全開!

          4、3個python小工具,Linux服務(wù)器性能直線飛起!!!

          5、別再去電腦店當(dāng)冤大頭,Windows自帶工具可找到所有故障原因



          點(diǎn)擊關(guān)注公眾號,閱讀更多精彩內(nèi)容


          瀏覽 74
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  国产一纹黄片 | 无码中文日韩 | 大香蕉三级在线视频 | 久久成人激情 | 国产乱伦高清视频免费看 |