天天看點

python與C++的效率差別

程式的執行方式

對于一個程式,一般來說有兩種執行方式,分别是解釋執行與編譯執行。

解釋語言

所謂解釋程式,是進階語言解釋程式的一種,它将源語言(如BASIC)書寫的源程式作為一種輸入,解釋一句後就送出給計算機執行一句,并不形成目标程式。就像外語翻譯中的“口譯”一樣,說一句翻一句,不産生全文的翻譯文本。

這種工作方式非常适合于人通過終端裝置與計算機會話,例如在終端上打一條指令或者語句,解釋程式就立即将此語句解釋成一條或者幾條指令并送出硬立即執行且将執行結果反映到終端,從終端把指令打入後,就能立即得到計算結果。這的确是很友善的,很适合于一些小型機的計算問題。但解釋程式執行速度很慢,例如源程式中出現循環,則解釋程式也重複地解釋并送出執行這一組語句,這就造成很大浪費。

編譯程式

這是一類很重要的語言處理程式,它将進階語言(例如FORTRAN、COBOL、Pascal、C等)源程式作為輸入,進行解釋轉換,産生出機器語言的目标程式,然後再讓計算機去執行這個目标程式,得到計算結果。

編譯程式工作時,先分析、後綜合,進而得到目标程式。所謂分析,是指詞法分析和文法分析;所謂綜合,指代碼優化,存儲配置設定和代碼生成。為了完成這些分析綜合任務,編譯程式采用對源程式進行多次掃描的辦法,每次掃描集中完成一項或者幾項任務,也有一項任務分散到幾次掃描完成的。

比如一次四次掃描:第一遍掃描做詞法分析,第二遍掃描做文法分析,第三遍掃描做代碼優化和存儲配置設定,第四遍掃描做代碼生成。

值得一提的是,大多數的變異程式直接生成機器語言的目标代碼,形成可執行的目标檔案,但是也有的編譯程式則先産生彙編語言一級的符号代碼檔案,然後再調用彙程式設計式進行翻譯加工處理,最後産生可執行的機器語言目标檔案。

在實際應用中,對于需要經常使用的有大量計算的大型題目,采用招待速度較快的編譯型的進階語言較好,雖然編譯過程本身較為複雜,但一旦形成目标檔案,以後可多次使用。相反,對于小型題目或計算簡單不太費機時的題目,則多選用解釋型的會話式進階語言,如BASIC,這樣可以大大縮短程式設計及調試的時間。

小結

  • 解釋執行:由解釋器根據輸入的資料當場執行而不生成任何的目标程式。
  • 編譯執行:先将源代碼編譯成目智語言(例如機器語言)之後,通過連接配接程式連接配接到生成的目标程式進行執行。

python和C++

python是一種腳本語言,是解釋執行的,不需要經過編譯,是以很友善快捷,且能夠很好地跨平台,寫一些小工具小程式特别合适。

而C++則是一種需要編譯後運作語言,在特定的機器上編譯後在特定的機上運作,運作效率高,安全穩定。但編譯後的程式一般是不跨平台的。

  • 首先,python東西比C++多,經過了更多層,python中甚至連數字都是object 。
  • 其次,python是解釋執行的,和實體機CPU之間多了解釋器這層,而C++是編譯執行的,直接就是機器碼,編譯的時候編譯器又可以進行一些優化。

是以在運作效率上,C++要遠好于python。

繼續閱讀