Python 這門程式語言的運作速度並不快,這早已不是什麼秘密了。許多開發者期待這門語言的表現有所提升,這種情況或即將發生改變,或至少朝著正確的方向前進著,這也是Python的創始人重新出山後的決策結果之一。
5月7日,Python團隊發布最新的 Python 版本 - Python 3.11。目前發布的是一個測試版本 (Beta1) ,供開發者測試或實驗時使用。
依照開發團隊的規定下規約,預計 2022 年 10 月正式版本將釋出。
有好奇網友在自己的虛擬機器上進行了測試,他在單獨的 Docker 容器分別安裝了 Python 3.10 和 3.11,並查看它們在一組基準測試中的比較。
在其中使用了pyperformance 套件來完成這項工作,這個套件會幫助開發者完成繁重的基準測試工作。
總結的數據,以平均數值來計算,Python 3.11 比 Python 3.10 快了 14%。 3.11 新版本在某些基準測試上稍微慢了一點,但在大多數基準上,速度提高了 64%。
以下是在有著 10 核心 CPU 的 M1 Pro MacBook Pro 16 上執行的基準測試。每個 Python 版本都安裝在 Docker 中,它使用 5 個邏輯 CPU 核心。
以下是不同套件的運行資料:
#目前Python 3.11 的正式版尚未正式發布,需要等待一個完全穩定的版本,目前測試的僅是一個候選版本,也許正式版本發布後兩者之間的差距會更大。
相關報道:提速25%! CPython 3.11 來了
文| 羅奇奇,出品| OSC開源社群(ID:oschina2013)
##在退休又復出加入微軟的Faster CPython 團隊後, Python 之父Guido van Rossum 在2021 年Python 語言高峰會上放下狠話,表示團隊將在Python 3.11 版本中實現至少提速1 倍的進展。
而在今年的Python 語言高峰會上,Guido 和團隊夥伴Mark Shannon 報告了最新的進展:對比3.10 版本,CPython 3.11 的提速在10 - 60% 之間,具體速度取決於程式碼規模和工作領域等條件。當使用 pyperformance 基準套件測量在 Ubuntu Linux 上使用 GCC 編譯時, CPython 3.11 平均比 CPython 3.10 快 25% 。
CPython 3.11 的效能改進主要集中在更快的啟動和更快的運行時,這些最佳化大部分來自於PEP 659 :自適應解釋器,它運作想法跟JIT 有點相似,都是識別熱點代碼,但自適應解釋器的工作範圍無法脫離字節碼。目前 PEP 659 提案的工作已基本完成,但 for 迴圈和二進位操作的動態最佳化仍有待完成。
在提速 25% 的同時,Python 3.11 仍有一些需要改善的地方,例如 Python 在 3.11 中的記憶體消耗與 3.10 中的基本相同。
此外還需關注 C 擴充的問題:CPython 與 C 的簡單介面是主要優勢,而與 C 擴充功能的不相容性則是一大槽點。而Faster CPython 團隊在CPython 3.11 中所做的最佳化工作在很大程度上忽略了擴展模組的問題,對此,團隊領導者Shannon 表示,團隊正在開闢將低階函數API 暴露給虛擬機的可能性,以盡可能減少Python 程式碼和C 程式碼。
至於飽受期待的JIT 編譯器,Shannon 表示實現JIT 的第一步是實現一個追蹤解釋器,但目前還有太多需要關注的項目,引入JIT 編譯器的工作還有一段路要走,「最早可能要到3.13 才能到達」。 (順便說一下,Shannon 一直對CPython 是否真的需要引入JIT 持懷疑態度。)
#有意思的是,昨天我們報道了開發者Sam Gross 的新提案:完全移除CPython 解釋器的GIL- 全域解釋器鎖。這個提案和 Faster CPython 團隊的工作將以截然不同的方式加速多線程 Python 程式碼,但兩者又可能產生一些衝突,畢竟 Faster CPython 已實施的優化,很大一部分都基於 GIL 仍存在的前提。
註:在去年的核心開發者 sprint 會議上,核心開發者們跟 Sam Gross 對 nogil 專案做了一次深入研討,回答了大家較為關注的諸多問題。具體的會議紀要,可查看這篇文章——Python 官方研討會:徹底移除 GIL 真的可行麼?
以上是Python 3.11的效能提升近64%!的詳細內容。更多資訊請關注PHP中文網其他相關文章!