簡單代碼的效能差異

來源:互聯網
上載者:User
《.net 架構程式設計》裡的幾句代碼,我重新整理了一下,寫成函數,這樣下面的反編譯代碼看起來更方便點:

public void Boxing()
        {
            Int32 v = 5;
            Console.WriteLine("{0},{1},{2}",v,v,v);
        }
        public void Boxing1()
        {
            Int32 v = 5;
            object o = v;
            Console.WriteLine("{0},{1},{2}",o,o,o);
        }

兩個函數的輸出結果是一樣的,但是哪一個函數更好呢?

第一個顯然更簡單,但是在效能上第二個好,看看反編譯的代碼:
Boxing函數:.method public hidebysig instance void Boxing() cil managed
{
      // Code Size: 31 byte(s)
      .maxstack 4
      .locals (
            int32 V_0)
      L_0000: ldc.i4.5 
      L_0001: stloc.0 
      L_0002: ldstr "{0},{1},{2}"
      L_0007: ldloc.0 
      L_0008: box int32
      L_000d: ldloc.0 
      L_000e: box int32
      L_0013: ldloc.0 
      L_0014: box int32
      L_0019: call void [mscorlib]System.Console::WriteLine(string, object, object, object)
      L_001e: ret 
}

 

Boxing1函數的:.method public hidebysig instance void Boxing1() cil managed
{
      // Code Size: 23 byte(s)
      .maxstack 4
      .locals (
            int32 V_0,
            object V_1)
      L_0000: ldc.i4.5 
      L_0001: stloc.0 
      L_0002: ldloc.0 
      L_0003: box int32
      L_0008: stloc.1 
      L_0009: ldstr "{0},{1},{2}"
      L_000e: ldloc.1 
      L_000f: ldloc.1 
      L_0010: ldloc.1 
      L_0011: call void [mscorlib]System.Console::WriteLine(string, object, object, object)
      L_0016: ret 
}

第一個函數有三次裝箱操作,第二個只有一次,在記憶體和時間消耗上都要小些。

這麼簡單的代碼,在效能上都有這麼大的差異,以前寫的程式裡還不知道有多少有問題的代碼

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.