為什麼 Python 比其他語言慢?


Python 是一種指令碼語言,而 C 是一種程式語言。與 Python 相比,C/C++ 速度相對較快,因為當您執行 Python 指令碼時,其直譯器會逐行解釋指令碼並生成輸出,但在 C 中,編譯器會首先編譯它並生成一個針對硬體進行了最佳化的輸出。對於其他語言(如 Java 和 .NET),Java 位元組碼和 .NET 位元組碼分別比 Python 執行速度更快,因為 JIT 編譯器在執行時將位元組碼編譯為原生代碼。CPython 不能有 JIT 編譯器,因為 Python 的動態特性使得編寫 JIT 編譯器變得困難。

區別

眾所周知,Python 是一種解釋型語言,而 C 是一種編譯型語言。解釋型程式碼始終比直接的機器程式碼慢,因為實現一個解釋型指令需要比實現一個實際的機器指令多得多的指令。在程式能夠執行實際工作之前,Python 指令應該被 CPU 理解。因此,Python 直譯器會根據 Python 語言的規則檢查每個語句,例如為變數儲存分配記憶體、從程式中剔除空格和註釋以及其他相關任務。此過程對程式的每一行都重複進行,並顯著增加了程式執行的開銷。

C 速度很快

另一方面,C 在重新檢查原始碼上花費的時間不多,並快速轉換為 CPU 指令。在執行之前,一個單獨的編譯器將人類語言程式轉換為 CPU 指令,檢查錯誤,分配記憶體和變數,剔除註釋和空格,並最佳化生成的指令。編譯程式碼的結果連結到其他預製程式碼中,因此,您將獲得可靠的 CPU 指令,這些指令已準備好執行分配的任務,無需過多準備。在內部,Python 程式碼執行速度較慢的原因是程式碼在執行時被解釋,而不是在編譯時被編譯成原生代碼。

更新於:2020年6月26日

1K+ 閱讀量

啟動你的 職業生涯

透過完成課程獲得認證

開始學習
廣告