在本文中,我將向你展示c#編程的5個最佳實踐。我從日常編程經驗中學到了這些實踐。我在release模式下測試了所有的代碼,並在開發環境穩定后進行了截屏。我想你會喜歡這些建議的。
在使用數據類型之前選擇它
對於許多類型,我們寧願不決定在日常編程生活中使用什么數據類型。就在幾個月前,我也是其中之一。但是當我開始學習編程中的最佳實踐以提高代碼性能時,我了解到了錯誤的數據類型是如何影響代碼的。我將展示一個演示來證明這個概念。
在上面的代碼中,首先我使用了一個list來存儲1000個整數值,在第二次執行相同的操作時,我使用了一個整數數組。我的輸出截圖顯示了哪種存儲機制最適合整數數組。現在,你可能會想為什么這個list要花更多的時間呢?原因是,list以對象格式存儲數據,當我們首先嘗試存儲值類型時,它將其轉換為引用類型,然后再存儲。因此,第一點是始終選擇適當的存儲機制以獲得最佳性能。
使用for循環代替foreach
我現在要解釋一個非常有趣的事實。我想你們都熟悉for和foreach循環。現在如果我問你哪個更快?嗯…不知道。對吧?
伙計們,for循環比foreach循環快得多。讓我們看看下面的例子。
不要擔心,我已經在發布模式下測試了這個示例,這個屏幕截圖是在幾次測試運行后拍攝的。
選擇何時使用類,何時使用結構體
接受這樣一個事實,即基本理解了c#中的結構體和類,或者至少理解了最喜歡的編程語言中的結構體和類(如果它們存在的話)。好吧,如果你在想“很久以前我學過結構體,但在日常編碼生活中從未使用過它”,那么你就是那95%從未測量過類和結構體性能的開發人員中的一員。別擔心;在寫這篇文章之前,我也沒有。
那么類呢?是的,我們時不時地在日常項目開發中實現一個類。
現在我的問題是“哪個更快,類還是結構體”?我猜你會想“從未測試過”。好的,我們來測試一下。看看下面的代碼。
輸出結果如下:
現在很明顯,結構體要比類快得多。同樣,我在發布模式下測試了這段代碼,並獲得了至少20個輸出,以使程序達到穩定的位置。
現在最大的問題是“為什么結構體比類快?”
正如我們所知,結構體變量是值類型,值(或結構體變量)存儲在一個位置。
類對象是引用類型。如果是對象類型,則創建引用,並將值存儲在內存的其他位置。基本上,值存儲在一個可管理的堆中,指針創建在堆棧中。以這種方式在內存中實現一個對象,通常要比結構體變量花費更多的時間。
始終使用Stringbuilder進行字符串連接操作
這一點對開發人員來說非常關鍵。在進行大量字符串拼接操作時,請使用StringBuilder代替String。為了演示它對代碼性能的影響,我准備了以下示例代碼。我在for循環中執行了500次字符串拼接操作。
選擇分配類數據成員的最佳方式
在為類變量賦值之前,我建議你現在查看以下代碼和輸出屏幕。
是的,我們的輸出屏幕是說,使用屬性分配數據成員比直接分配要慢得多。
歡迎關注我的公眾號,如果你有喜歡的外文技術文章,可以通過公眾號留言推薦給我。
原文鏈接:https://www.c-sharpcorner.com/UploadFile/dacca2/5-tips-to-improve-performance-of-C-Sharp-code/