午夜剧场伦理_日本一道高清_国产又黄又硬_91黄色网战_女同久久另类69精品国产_妹妹的朋友在线

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

Python程序慢的重要原因

瀏覽:10日期: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 編程
相關文章:
主站蜘蛛池模板: 日韩拍拍拍 | av在线免费观看网址 | 久久久久久九九九九九 | 成年人免费黄色 | 国产伦精品一区二区三区免费 | 欧美刺激脚交jootjob | 97综合网 | 美女一区二区视频 | 夜夜爽夜夜操 | 亚洲 欧美 综合 | 91网址入口 | 中文字幕视频观看 | 四虎少妇做爰免费视频网站四 | 久久免费大片 | 亚洲精品久久 | 五月婷婷六月香 | 欧美黄色大片视频 | 国产日韩一区二区 | 视频一区二区在线 | 男人的天堂a在线 | 爱啪啪tv | 一区二区精品视频在线观看 | 久久九九99| 国产欧美精品区一区二区三区 | 99精品国自产在线 | www久久久久久 | 午夜黄色网 | 午夜影院在线播放 | 欧美日韩亚洲国产另类 | 欧美不卡在线视频 | 欧美色人阁 | 色综合成人 | 国产精品国产三级国产 | 午夜影视大全 | 亚洲国产欧美视频 | 久久综合免费视频 | 久草视频手机在线 | 天天爽天天| 亚洲天堂成人在线 | 天堂素人 | 久久久成人免费视频 |