久久福利_99r_国产日韩在线视频_直接看av的网站_中文欧美日韩_久久一

您的位置:首頁技術文章
文章詳情頁

Python程序慢的重要原因

瀏覽:7日期:2022-07-12 11:52:10

Python慢的重要原因:

1、python是動態性語言不是靜態性語言

在python程序執行的時候,編譯器不知道變量的類型。

2、python是解釋性語言而不是編譯性語言

解釋型語言與編譯型語言它們本身的區別也會造成程序在執行的時候的速度差異。一個智能化的編譯器可以預測并針對重復和不需要的操作進行優化。這也會提升程序執行的速度。

3、 python的對象模型會導致訪問內存效率低下

相對于C語言,在python中對整數進行操作會有一個額外的類型信息層。

當有很多的整數并且希望進行某種批操作時,在python中往往會使用一個list,而在C中會使用某個基于緩存區的數組。

內容擴展:

Python一種動態類型,解釋性的語言,對于很多開發者來說,Python運行慢是眾所周知的事情,其萬物皆對象的特性,就是導致其運行慢的一個原因,這篇文章就是想聊聊這里面的一些細節。

慢的原因

由于各種原因,Python比Fortran和C語言慢。

動態類型

Pythn是動態類型而不是靜態類型的,這意味著,在程序執行時,解釋器并不知道變量的類型。下圖可以用來說明C變量和Python變量的區別

對C語言來說,編譯器在聲明變量的時候就知道其類型了;對Python來說,程序執行時只知道一個變量是某種Python對象。

對于下面的C代碼

int a = 1;int b = 2;int c = a + b;

編譯器始終知道a和b是整型,在執行相加運算時,流程如下:

把<int> 1賦值給a

把<int> 2賦值給b

調用binary_add<int, int>(a, b)

把結果賦值給c

實現同樣功能的Python代碼如下

a = 1b = 2c = a + b

解釋器只知道1和2是對象,但是并不知道這個對象的類型。所以解釋器必須檢查每個變量的PyObject_HEAD才能知道變量類型,然后執行對應的相加操作,最后要創建一個新的Python對象來保存返回值,大致流程如下:

把1賦值給a

設置a->PyObject_HEAD->typecode為整型 設置a->val = 1

把2賦值給b

設置a->PyObject_HEAD->typecode為整型 設置b->val = 2

調用binary_add<int, int>(a, b)

a->PyObject_HEAD獲取類型編碼 a是一個整型;值為a->val b->PyObject_HEAD獲取類型編碼 b是一個整型,值為b->val 調用binary_add<int, int>(a->val, b->val) 結果為整型,存在result中

創建對象c

設c->PyObject_HEAD->typecode為整型

設置c->val為result

動態類型意味著任何操作都會涉及更多的步驟。這是Python對數值操作比C語言慢的主要原因

到此這篇關于Python程序慢的重要原因的文章就介紹到這了,更多相關Python慢的重要原因內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 91久久精品一区 | 久久久久久久久久国产 | 一区不卡 | 亚洲精品一区在线观看 | 欧美中文字幕在线 | 美女操网站 | 日韩福利片 | 91av在线免费看 | 青青草国产成人av片免费 | a毛片毛片av永久免费 | 中文字幕av第一页 | 精品一区二区三区中文字幕 | 久久久久亚洲一区二区三区 | 久久久久久亚洲精品视频 | 成人精品三级av在线看 | 久久久精品网 | 视频精品一区二区 | 亚洲一区二区伦理 | 午夜寂寞福利视频 | av男人的天堂网 | 天天干人人 | 欧美日韩精品在线 | yy6080久久伦理一区二区 | 久久手机在线视频 | 欧美中文字幕 | 国产精品久久免费视频在线 | 欧美视频中文字幕 | 国产伦精品一区二区三区四区视频 | 国产91av视频在线观看 | 一区二区三区国产视频 | 国产成人在线视频 | 精品成人免费视频 | 亚洲欧美在线综合 | 激情99| 国产在线观看二区 | 久久99深爱久久99精品 | 国产精品一区二区无线 | 久久综合久久综合久久综合 | 日韩欧美国产精品综合嫩v 亚洲欧美日韩在线 | 欧美一级精品 | 国内精品视频一区二区三区八戒 |