目錄
Python 比 C 慢,因為它是一種解釋語言。
幾乎總是使用虛擬機器來運行 Python 程式碼
範例
編譯過程
本機程式碼
為什麼Python比C慢?
結論
首頁 後端開發 Python教學 為什麼C程式碼比Python的運行速度更快?

為什麼C程式碼比Python的運行速度更快?

Sep 11, 2023 pm 12:45 PM
python 運行速度 c程式碼

為什麼C程式碼比Python的運行速度更快?

在本文中,我們將了解為什麼 C 語言程式碼運行速度比 Python 更快。

Guido Van Rossum 開發了 Python,這是最有名的程式語言之一。 Python因其清晰的語法和簡單的程式碼而受到開發人員的歡迎,即使對於新手來說也是如此。學習Python對於那些剛開始程式設計職業生涯的人來說是非常有利的。他們可以使用 Python 程式設計培訓、部落格、影片、模組和數千種其他資源來了解這種流行語言的各個方面。完成後,您將能夠進行現代開發活動,例如 GUI 開發、網頁設計、系統管理、複雜的金融交易或計算、數據科學、視覺化等等。

Python 比 C 慢,因為它是一種解釋語言。

Python 比 C 慢,因為它是一種解釋性語言。

因此,需要更多真實的 CPU 指令來執行給定的語句。

您可以透過在 Python 程式碼中加入數字 1 或將其與給定值進行比較來驗證變數的值是否小於、大於或精確等於該值。

不同之處在於,Python 程式碼不會立即由 CPU 執行,而是會被解釋。

就性能而言,這使世界變得與眾不同。

幾乎總是使用虛擬機器來運行 Python 程式碼

虛擬電腦的另一個名稱是「字節碼解釋器」。

解釋程式碼總是比實際機器碼慢,因為它需要比執行實際機器指令更多的指令來實作指令。

範例

考慮表達式 x = 1。在 Intel CPU 中,暫存器增量是單一操作,延遲為 1,吞吐量倒數為三分之一 (1/3)。

換句話說,它指的是英特爾處理器可以提供的最快的CPU指令。

在Python中,x = 1是如何實現的?

要理解這一點,您必須先了解 Python 內部是如何運作的。

Python 的內部元件包括分詞器、詞法分析器、字節碼產生器和字節碼解釋器 -

  • Tokenizer - 它根據給定的 ASCII 文字檔案(Python 程式碼)建立令牌流。

  • 詞法分析器 - Python 的這個區域涉及適當的縮排和間距。此時進行語法檢查。

  • 字節碼產生器 - 如果進行了任何最佳化,則它們是由Python 元件進行的;但是,由於Python 不是編譯語言,因此與C 編譯器相比,可用優化的範圍受到限制。

  • 被稱為「字節碼解釋器」的 Python 模組管理字節碼流並為 Python 虛擬機器提供動力(維護其狀態)。

字節碼一旦生成,通常會快取在記憶體中。

因為您不必對 Python 已經見過的程式碼重複標記化、詞法分析和字節碼產生過程,所以這提高了速度。

因此,我們不必每次循環 while 循環時都經歷標記化、詞法分析和字節碼創建過程,而是可以繼續將字節碼傳遞給字節碼解釋器。

這不是更快嗎? 不,實際上並非如此。

雖然使用快取的字節碼速度更快,但它的執行或操作速度不如機器碼。

運行程式碼的真實CPU不是虛擬電腦。

編譯過程

編譯型 UCSD Pascal 與當時的其他編譯語言不同,並未編譯為組合語言。相反,它被編譯成 p 程式碼。

因此,當您想到「編譯的 Pascal 程式」時,您會想到 p-Code。如果您喜歡 Java 或 Python 並且想假裝您想出了一些新東西,請使用「字節碼」。

此外,Python 還包括「編譯的Python」的概念,它指的是經過分詞器、詞法分析器和字節碼產生器處理以創建可提供給字節碼解釋器的快取字節碼的Python 程式碼(又稱Python 虛擬機器)。

當您看到擴展名為.py的檔案時,它是一個包含Python原始碼的ASCII文字檔案。

PYthon,已編譯是帶有「.pyc」副檔名的檔案所代表的內容。

仍然,虛擬計算機執行已建立的程式碼。

本機程式碼

程式一旦建置完成,就不會完全轉換為本機程式碼,直到它被轉換為其設計平台的本機二進位 CPU 指令。

這通常涉及編寫彙編程式碼,將其傳遞給彙編器,然後讓彙編器建立特定於平台的目標文件,而不是使用字節碼。

在程式連接到平台運行時之前,它尚未準備好使用。運行時可以提供動態物件載入等運行時服務並建置程式碼執行的環境。在已編譯的 C 中,存在運行時。已編譯的C 具有運行時。

為什麼Python比C慢?

  • Python 執行大量的健全性檢查- 整數永遠不會溢出,無效記憶體永遠不會被訪問,類型永遠不會(默默地)不正確,並且數組永遠不會超出其末端進行寫入或讀取。在 Python 中,很難出現“非本地錯誤”,但在 C 中,出現並非實際報告錯誤的錯誤是相當常見的。

  • Python 的編譯器不會進行非常高級的最佳化(如果有的話) - 一方面,速度不像C 中那麼重要,而且沒有那麼多資訊可以繼續- 例如,在Common Lisp(另像Python 一樣的動態語言)中,您可以提供類型註釋以獲得與C 相同的速度- 如果您選擇退出安全檢查並承諾某些變數將具有某些類型,您將獲得完全相同的機器碼指令(如果你的程式中有錯誤,也會出現完全相同的奇怪行為)。

結論

在本文中,我們了解了 C 語言程式碼執行速度比 Python 更快的不同原因。

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

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

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1666
14
CakePHP 教程
1425
52
Laravel 教程
1325
25
PHP教程
1272
29
C# 教程
1252
24
PHP和Python:解釋了不同的範例 PHP和Python:解釋了不同的範例 Apr 18, 2025 am 12:26 AM

PHP主要是過程式編程,但也支持面向對象編程(OOP);Python支持多種範式,包括OOP、函數式和過程式編程。 PHP適合web開發,Python適用於多種應用,如數據分析和機器學習。

在PHP和Python之間進行選擇:指南 在PHP和Python之間進行選擇:指南 Apr 18, 2025 am 12:24 AM

PHP適合網頁開發和快速原型開發,Python適用於數據科學和機器學習。 1.PHP用於動態網頁開發,語法簡單,適合快速開發。 2.Python語法簡潔,適用於多領域,庫生態系統強大。

sublime怎麼運行代碼python sublime怎麼運行代碼python Apr 16, 2025 am 08:48 AM

在 Sublime Text 中運行 Python 代碼,需先安裝 Python 插件,再創建 .py 文件並編寫代碼,最後按 Ctrl B 運行代碼,輸出會在控制台中顯示。

Python vs. JavaScript:學習曲線和易用性 Python vs. JavaScript:學習曲線和易用性 Apr 16, 2025 am 12:12 AM

Python更適合初學者,學習曲線平緩,語法簡潔;JavaScript適合前端開發,學習曲線較陡,語法靈活。 1.Python語法直觀,適用於數據科學和後端開發。 2.JavaScript靈活,廣泛用於前端和服務器端編程。

PHP和Python:深入了解他們的歷史 PHP和Python:深入了解他們的歷史 Apr 18, 2025 am 12:25 AM

PHP起源於1994年,由RasmusLerdorf開發,最初用於跟踪網站訪問者,逐漸演變為服務器端腳本語言,廣泛應用於網頁開發。 Python由GuidovanRossum於1980年代末開發,1991年首次發布,強調代碼可讀性和簡潔性,適用於科學計算、數據分析等領域。

Golang vs. Python:性能和可伸縮性 Golang vs. Python:性能和可伸縮性 Apr 19, 2025 am 12:18 AM

Golang在性能和可擴展性方面優於Python。 1)Golang的編譯型特性和高效並發模型使其在高並發場景下表現出色。 2)Python作為解釋型語言,執行速度較慢,但通過工具如Cython可優化性能。

vscode在哪寫代碼 vscode在哪寫代碼 Apr 15, 2025 pm 09:54 PM

在 Visual Studio Code(VSCode)中編寫代碼簡單易行,只需安裝 VSCode、創建項目、選擇語言、創建文件、編寫代碼、保存並運行即可。 VSCode 的優點包括跨平台、免費開源、強大功能、擴展豐富,以及輕量快速。

notepad 怎麼運行python notepad 怎麼運行python Apr 16, 2025 pm 07:33 PM

在 Notepad 中運行 Python 代碼需要安裝 Python 可執行文件和 NppExec 插件。安裝 Python 並為其添加 PATH 後,在 NppExec 插件中配置命令為“python”、參數為“{CURRENT_DIRECTORY}{FILE_NAME}”,即可在 Notepad 中通過快捷鍵“F6”運行 Python 代碼。

See all articles