.NET編程中的部分效率問題

來源:互聯網
上載者:User

1.         父類要精簡,沒有必要的方法和屬性不要寫在上面。因為即使是私人的方法和屬性,對於子類來說,雖然無法繼承,但是這些內容也會儲存在子類中,只是我們無法使用而已。這樣就造成了子類佔用了許多無謂的空間。

2.         類中的靜態欄位沒有倍乘成本。既我們對那些在類中需要經常使用的,或是建立成本比較大的欄位,要盡量用靜態欄位。而如果用非靜態欄位,如果出現莫個類建立一萬次的話,那就會建立一萬個該欄位。會非常影響效率。

3.         靜態方法並不比執行個體方法效能好。因為在.NET中,無論是靜態方法還是執行個體方法在程式碼片段中只是儲存一份,也就是不會出現上面所說的執行個體欄位出現的倍乘問題。所以我們在編寫類的時候,不用從倍乘方面考慮方法的動靜態問題。

4.         虛函數存在效率問題。因為無論是靜態方法還是動態方法,在編譯器中都是執行Jmp到確定的地址,而虛函數的地址是不確定的,需要後期綁定,所以對程式效率有所影響。

5.         慎用Struct類型作為參數進行傳遞。在編寫程式的時候我們有時會考慮是用類還是用結構的問題,雖然在.NET中結構沒有記憶體回收的成本(當然記憶體回收的成本也不會因為少一個類而降低多少),但是當作為參數傳遞時需要記憶體拷貝,這樣的成本是比較大的。但是如果我們僅僅是在方法裡使用結構,而不是作為參數進行傳遞則沒有關係。

6.         將對象置為NULL,來誘發垃圾收集器收集是無效率的。我們常常在程式中建立某個類,使用後,在結束的位置用 xxx=null;來試圖釋放記憶體,其實常常垃圾收集器已經在該類使用後將其收集了,這樣做多此一舉。

7.         盡量不要自己寫解構函式。由於.NET中的垃圾收集器已經很有效了,所以我們沒有必要一定要親曆親為的去寫析夠函數來釋放我們不放心的對象或變數。而且析夠函數的效率比較低,反倒會起到不好的作用。

8.         垃圾收集器雖然效率高,但是它也有“欺軟怕硬”的特點。對於那些“抱團”的對象(與其他對象有縱橫交錯的聯絡,如DataSet類),其收集的效果沒有簡單對象好(我們是不是可以幫它一下呢?和前面的第6點需要辨正的來看問題?)。

9.         “介面”、“委託”、“反射”這些都是晚幫定地址的,其效率都會收到影響。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.