首頁 >後端開發 >Python教學 >為什麼 Python 程式碼在函數內部速度更快?

為什麼 Python 程式碼在函數內部速度更快?

Susan Sarandon
Susan Sarandon原創
2024-11-12 22:01:01638瀏覽

Why is Python Code Faster Inside Functions?

函數內更快的Python 程式碼:揭示最佳化執行

執行Python 程式碼時,將操作包含在函數中通常會帶來顯著的性能提升。這個顯著的差異激發了好奇心:為什麼Python程式碼在函數中執行得更快?

調查速度差異

考慮以下程式碼片段:

def main():
    for i in xrange(10**8):
        pass
main()

執行此程式碼大約需要 1.8 秒的時間。然而,當 for 迴圈在函數外部執行時:

for i in xrange(10**8):
    pass

執行需要更長的 4.5 秒。

字節碼分析:揭示根本原因

為了理解這種效能差異,我們深入研究了 Python 產生的字節碼。在函數內部,字節碼顯示一系列操作,用於設定循環、計算範圍並迭代它。此結構針對速度進行了最佳化。

在頂層,字節碼略有不同。變數 i 被宣告為全域變量,導致儲存操作 (STORE_NAME) 比函數中使用的本機儲存操作 (STORE_FAST) 慢。

要檢查字節碼,dis 模組提供了寶貴的幫助。以下指令分別反組譯函數與頂層程式碼:

import dis
dis.dis(main)
dis.dis(compile('for i in xrange(10**8): pass', '', 'exec'))

結論

Python 中函數內執行程式碼的效能優勢源自於下列最佳化:字節碼執行。與使用全域變數(涉及較慢的 STORE_NAME 指令)相比,使用 STORE_FAST 指令表示的局部變數可顯著提高執行速度。

以上是為什麼 Python 程式碼在函數內部速度更快?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn