就像一個黑匣子,很多時候我們不知道python內(nèi)部是怎樣執(zhí)行代碼的,而且DEBUG的時候也沒有機器指令可以查看,非常不利于代碼優(yōu)化。但是沒關(guān)系,現(xiàn)在我們有Dis模塊來對代碼進行性能剖析。
為什么下面第一個函數(shù)比第二個函數(shù)耗得內(nèi)存更少?
如果你沒有厲害到那個程度是很難想出來的,但是我們使用Dis模塊卻能很容易找到答案:
結(jié)果:
Dis的結(jié)果其實很容易閱讀:
第一列:對應(yīng)的源代碼行數(shù)。
第二列:對應(yīng)的內(nèi)存字節(jié)碼的索引位置。
第三列:內(nèi)部機器代碼的操作。
第四列:指令參數(shù)。
第五列:實際參數(shù)。
兩個函數(shù)的dis分析用*號隔開了,大家可以清晰地看到兩個函數(shù)之間的語句區(qū)別。 第二個函數(shù)的字節(jié)碼索引最大到了30,而第一個函數(shù)的字節(jié)碼索引最大僅到了22,因此,第一個函數(shù)耗得內(nèi)存比第二個函數(shù)少 。
而且,在第一列和第二列之間的 >> 號表示跳轉(zhuǎn)的目標(biāo),大家可以看第二個函數(shù)第四列的 18,表示其跳轉(zhuǎn)到了索引為18的指令,也就是ROT_TWO。第二個函數(shù)的跳轉(zhuǎn)也比第一個函數(shù)多,這也可能導(dǎo)致其在某種特殊情況下的效率可能會比第一個函數(shù)低。
-
模塊
+關(guān)注
關(guān)注
7文章
2736瀏覽量
47787 -
函數(shù)
+關(guān)注
關(guān)注
3文章
4346瀏覽量
63010 -
代碼
+關(guān)注
關(guān)注
30文章
4834瀏覽量
69116 -
python
+關(guān)注
關(guān)注
56文章
4809瀏覽量
85070
發(fā)布評論請先 登錄
相關(guān)推薦
學(xué)python有哪些方向?
探究python字節(jié)碼
PIC16LF1939的代碼性能分析
三種提高Python代碼性能的簡便方法
python代碼示例之基于Python的日歷api調(diào)用代碼實例
![<b class='flag-5'>python</b><b class='flag-5'>代碼</b>示例之基于<b class='flag-5'>Python</b>的日歷api調(diào)用<b class='flag-5'>代碼</b>實例](https://file.elecfans.com/web1/M00/63/17/o4YBAFuQy8-AO90pAAAei-DUxgU163.png)
Python代碼的性能分析的命令合集
Python 代碼加速運行的的小技巧
python包、模塊和庫是什么
怎么用模塊來觀察代碼性能表現(xiàn)
![怎么用<b class='flag-5'>模塊</b>來觀察<b class='flag-5'>代碼</b><b class='flag-5'>性能</b>表現(xiàn)](https://file1.elecfans.com/web2/M00/A9/A5/wKgaomUzPPmAKN6iAAjO0T8MrVM256.jpg)
Dis模塊的使用
![<b class='flag-5'>Dis</b><b class='flag-5'>模塊</b>的使用](https://file1.elecfans.com/web2/M00/AC/19/wKgaomVDT0GAE7QZAACIOZXhXMU914.jpg)
評論