就像一個黑匣子,很多時候我們不知道python內部是怎樣執(zhí)行代碼的,而且DEBUG的時候也沒有機器指令可以查看,非常不利于代碼優(yōu)化。但是沒關系,現(xiàn)在我們有Dis模塊來對代碼進行性能剖析。
為什么下面第一個函數(shù)比第二個函數(shù)耗得內存更少?


如果你沒有厲害到那個程度是很難想出來的,但是我們使用Dis模塊卻能很容易找到答案:

結果:

Dis的結果其實很容易閱讀:
第一列:對應的源代碼行數(shù)。
第二列:對應的內存字節(jié)碼的索引位置。
第三列:內部機器代碼的操作。
第四列:指令參數(shù)。
第五列:實際參數(shù)。
兩個函數(shù)的dis分析用*號隔開了,大家可以清晰地看到兩個函數(shù)之間的語句區(qū)別。 第二個函數(shù)的字節(jié)碼索引最大到了30,而第一個函數(shù)的字節(jié)碼索引最大僅到了22,因此,第一個函數(shù)耗得內存比第二個函數(shù)少 。
而且,在第一列和第二列之間的 >> 號表示跳轉的目標,大家可以看第二個函數(shù)第四列的 18,表示其跳轉到了索引為18的指令,也就是ROT_TWO。第二個函數(shù)的跳轉也比第一個函數(shù)多,這也可能導致其在某種特殊情況下的效率可能會比第一個函數(shù)低。
-
模塊
+關注
關注
7文章
2837瀏覽量
53301 -
函數(shù)
+關注
關注
3文章
4417瀏覽量
67547 -
代碼
+關注
關注
30文章
4968瀏覽量
74004 -
python
+關注
關注
57文章
4877瀏覽量
90077
發(fā)布評論請先 登錄
學python有哪些方向?
PIC16LF1939的代碼性能分析
三種提高Python代碼性能的簡便方法
python代碼示例之基于Python的日歷api調用代碼實例
Python代碼的性能分析的命令合集
Python 代碼加速運行的的小技巧
python包、模塊和庫是什么
怎么用模塊來觀察代碼性能表現(xiàn)
Dis模塊的使用
python 使用Dis模塊進行代碼性能剖析
評論