0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

python 使用Dis模塊進(jìn)行代碼性能剖析

科技綠洲 ? 來源:Python實(shí)用寶典 ? 作者:Python實(shí)用寶典 ? 2023-11-03 15:39 ? 次閱讀

就像一個(gè)黑匣子,很多時(shí)候我們不知道python內(nèi)部是怎樣執(zhí)行代碼的,而且DEBUG的時(shí)候也沒有機(jī)器指令可以查看,非常不利于代碼優(yōu)化。但是沒關(guān)系,現(xiàn)在我們有Dis模塊來對代碼進(jìn)行性能剖析。

為什么下面第一個(gè)函數(shù)比第二個(gè)函數(shù)耗得內(nèi)存更少?

圖片

圖片

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

圖片

結(jié)果:

圖片

Dis的結(jié)果其實(shí)很容易閱讀:

第一列:對應(yīng)的源代碼行數(shù)。
第二列:對應(yīng)的內(nèi)存字節(jié)碼的索引位置。
第三列:內(nèi)部機(jī)器代碼的操作。
第四列:指令參數(shù)
第五列:實(shí)際參數(shù)。

兩個(gè)函數(shù)的dis分析用*號隔開了,大家可以清晰地看到兩個(gè)函數(shù)之間的語句區(qū)別。 第二個(gè)函數(shù)的字節(jié)碼索引最大到了30,而第一個(gè)函數(shù)的字節(jié)碼索引最大僅到了22,因此,第一個(gè)函數(shù)耗得內(nèi)存比第二個(gè)函數(shù)少 。

而且,在第一列和第二列之間的 >> 號表示跳轉(zhuǎn)的目標(biāo),大家可以看第二個(gè)函數(shù)第四列的 18,表示其跳轉(zhuǎn)到了索引為18的指令,也就是ROT_TWO。第二個(gè)函數(shù)的跳轉(zhuǎn)也比第一個(gè)函數(shù)多,這也可能導(dǎo)致其在某種特殊情況下的效率可能會比第一個(gè)函數(shù)低。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 模塊
    +關(guān)注

    關(guān)注

    7

    文章

    2655

    瀏覽量

    47293
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4283

    瀏覽量

    62325
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4722

    瀏覽量

    68236
  • python
    +關(guān)注

    關(guān)注

    55

    文章

    4767

    瀏覽量

    84376
收藏 人收藏

    評論

    相關(guān)推薦

    學(xué)python有哪些方向?

    Python學(xué)習(xí)的另一方向,網(wǎng)絡(luò)編程在生活和開發(fā)中無處不在,哪里有通訊就有網(wǎng)絡(luò),它可以稱為是一切開發(fā)的“基石”。對于所有編程開發(fā)人員必須要知其然并知其所以然,所以網(wǎng)絡(luò)部分將從協(xié)議、封包、解包等底層進(jìn)行深入剖析
    發(fā)表于 03-09 15:47

    探究python字節(jié)碼

    玩這個(gè),Python標(biāo)準(zhǔn)庫中的dis模塊就非常有用了; dis模塊Python字節(jié)碼提供了一個(gè)
    發(fā)表于 05-22 15:48

    PIC16LF1939的代碼性能分析

    家族不起作用。你能建議使用哪種代碼剖析工具嗎?我想分析代碼性能,函數(shù)執(zhí)行時(shí)間等。讓我知道是否有任何其他有效的方法進(jìn)行
    發(fā)表于 03-10 10:26

    三種提高Python代碼性能的簡便方法

      在互聯(lián)網(wǎng)編程語言盛行的今天,Python是比較流行的編程語言之一。但很多程序員對于Python代碼性能的方法并不了解。今天這里主要為大家介紹三種提高
    發(fā)表于 08-03 18:37

    python代碼示例之基于Python的日歷api調(diào)用代碼實(shí)例

    本文檔的主要內(nèi)容詳細(xì)介紹的是python代碼示例之基于Python的日歷api調(diào)用代碼實(shí)例。
    發(fā)表于 09-06 14:25 ?42次下載
    <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>實(shí)例

    Python代碼性能分析的命令合集

    當(dāng)我們開始精通編程語言時(shí),我們不僅希望實(shí)現(xiàn)最終的編程目標(biāo),而且還希望可以使我們的程序更高效。在本文中,我們將學(xué)習(xí)一些 Ipython 的命令,這些命令可以幫助我們對 Python 代碼進(jìn)行時(shí)間分析
    發(fā)表于 11-25 10:43 ?10次下載

    Python 代碼加速運(yùn)行的的小技巧

    的技巧進(jìn)行整理。 0. 代碼優(yōu)化原則本文會介紹不少的 Python 代碼加速運(yùn)行的技巧。在深入代碼優(yōu)化細(xì)節(jié)之前,需要了解一些
    的頭像 發(fā)表于 09-01 11:28 ?1679次閱讀

    python包、模塊和庫是什么

    1. 模塊 以 .py 為后綴的文件,我們稱之為 模塊,英文名 Module。 模塊讓你能夠有邏輯地組織你的 Python 代碼段,把相關(guān)的
    的頭像 發(fā)表于 03-09 16:47 ?2287次閱讀

    python中間模塊重載介紹

    python通過reload重載模塊動態(tài)更新最新代碼。 ## 1.1 reload
    的頭像 發(fā)表于 02-21 11:16 ?512次閱讀

    [源代碼]Python算法詳解

    [源代碼]Python算法詳解[源代碼]Python算法詳解
    發(fā)表于 06-06 17:50 ?0次下載

    怎么用模塊來觀察代碼性能表現(xiàn)

    的時(shí)間與當(dāng)前時(shí)間的距離,顏色越淺代表離當(dāng)前時(shí)間越近。 下面就來教大家怎么用這個(gè)模塊來觀察你的代碼性能表現(xiàn)。 1.準(zhǔn)備 開始之前,你要確保Python和pip已經(jīng)成功安裝在電腦上,如果沒
    的頭像 發(fā)表于 10-21 10:53 ?319次閱讀
    怎么用<b class='flag-5'>模塊</b>來觀察<b class='flag-5'>代碼</b><b class='flag-5'>性能</b>表現(xiàn)

    Dis模塊的使用

    Python字節(jié)碼指令,而這些字節(jié)碼是一種類似于匯編指令的中間語言,但是每個(gè)字節(jié)碼對應(yīng)的不是機(jī)器指令,而是一段C代碼。 而Dis模塊,就是用于查看這些字節(jié)碼的運(yùn)行軌跡,因此我們可以用
    的頭像 發(fā)表于 11-02 15:27 ?548次閱讀
    <b class='flag-5'>Dis</b><b class='flag-5'>模塊</b>的使用

    python怎樣運(yùn)行代碼

    Python是一種廣泛使用的編程語言,用于開發(fā)各種類型的應(yīng)用程序。它具有簡單易學(xué)的語法和強(qiáng)大的功能,可以用于編寫簡單的腳本、開發(fā)桌面應(yīng)用、構(gòu)建Web應(yīng)用、進(jìn)行科學(xué)計(jì)算等多種用途。在本文中,我們將詳細(xì)
    的頭像 發(fā)表于 11-22 10:31 ?1120次閱讀

    python如何導(dǎo)入模塊

    Python是一種強(qiáng)大的編程語言,它支持模塊化編程,使得開發(fā)者可以將代碼分解為可重用且獨(dú)立的模塊。模塊是一個(gè)包含函數(shù)、類和變量等定義的文件,
    的頭像 發(fā)表于 11-22 14:46 ?875次閱讀

    python軟件怎么運(yùn)行代碼

    Python是一種高級編程語言,它被廣泛用于開發(fā)各種類型的應(yīng)用程序,從簡單的腳本到復(fù)雜的網(wǎng)絡(luò)應(yīng)用和機(jī)器學(xué)習(xí)模型。要運(yùn)行Python代碼,您需要一個(gè)Python解釋器,它可以將您的
    的頭像 發(fā)表于 11-28 16:02 ?842次閱讀