函數內 Python 程式碼的增強效能
這個問題調查了為什麼 Python 程式碼在放置在函數中時執行速度明顯更快。在提供的程式碼中,循環遍歷很大的範圍,並且執行時間根據循環是否包含在函數中而變化很大。
效能差異的原因
效能差異源自於為程式碼產生的底層位元組碼。在函數內,位元組碼使用 STORE_FAST 指令為局部變數賦值。此過程經過最佳化,通常比使用 STORE_NAME 指令更快,STORE_NAME 指令用於為全域或非局部變數賦值。
字節碼分析
字節碼函數內循環如下:
SETUP_LOOP 20 (to 23) LOAD_GLOBAL 0 (xrange) LOAD_CONST 3 (100000000) CALL_FUNCTION 1 GET_ITER FOR_ITER 6 (to 22) STORE_FAST 0 (i) JUMP_ABSOLUTE 13 POP_BLOCK LOAD_CONST 0 (None) RETURN_VALUE
相反,函數外循環的字節碼為:
SETUP_LOOP 20 (to 23) LOAD_NAME 0 (xrange) LOAD_CONST 3 (100000000) CALL_FUNCTION 1 GET_ITER FOR_ITER 6 (to 22) STORE_NAME 1 (i) JUMP_ABSOLUTE 13 POP_BLOCK LOAD_CONST 2 (None) RETURN_VALUE
結論
在為函數內的循環產生的字節碼中使用 STORE_FAST 而不是 STORE_NAME 有助於提高其執行速度。這證明了了解字節碼優化技術對於提高 Python 程式碼效能的重要性。
以上是為什麼 Python 程式碼在函數內部運行得更快?的詳細內容。更多資訊請關注PHP中文網其他相關文章!