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