從後臺看python--為什麼說python是慢的
python越來越作為一種科學技術研究的語言越來越流行,可是我們經常聽到一個問題,python是慢的。那麼我們從後臺分析一下,為什麼python是慢的。
python是一種動態型別,解釋型語言,它的值都是儲存在分散的物件中,而不是緊密的快取之中。
1.python是動態型別語言
這意味著編譯器在程式執行之前並不知道變數定義的型別。C定義變數和Python定義變數的方式的區別:
對於C,編譯器通過定義知道變數的型別;然而對於python中的變數,當你知道變數的型別的時候已經是程式執行的時候了。
我們分析一小段程式碼分別在python和C中執行的具體區別:
在C中,如果你寫如下程式碼:
int a = 1;
int b = 2;
int c = a + b;
1.分配一個型別1給a
2.分配一個型別2給b
3.呼叫一個二進位制加法
a = 1
b = 2
c = a + b
1.分配1給a
- 設定一個物件,然後將它的型別設定為整數
將它的值設為1
2.分配2給b設定一個物件,然後將它的型別設定為整數
將它的值設為2
3.呼叫一個二進位制加法(a,b)尋找一個型別在物件中
- a是一個整數,它的值是a
- 尋找一個型別在物件中
- b是一個整數,它的值是b
- 呼叫一個二進位制加法
返回結果,結果是一個整數
4.產生一個物件c將一個物件的型別設定為整數
- 將它的值分配給結果
動態型別意味著每一步操作需要更多的步驟。python比c慢的一個基本的原因就是數字計算上面的操作。
2.python是一種解釋型的語言而不是編譯型的
我們可以看到解釋型語言和編譯型語言的區別。一個聰明的編譯器知道怎麼提前優化,避免重複和不必要的操作,從而提高效率。當然,在這一點上也是仁者見仁智者見智。
3.python的物件模型導致儲存效率低下
python儲存資料效率低下的原因,主要可以從下圖看出:
當然說了python這麼多缺點,為什麼python用的人還這麼多,因為它很簡單啊。python用起來的確很簡單,就我個人的使用感受而言,除了matlab,我沒有看過比python還要簡單的語言了。而且python的開源的庫很多,所以做很多東西都很方便。