最大限度提高.NET的性能

優化 .NET的性能

1)避免使用ArrayList。
     因爲任何對象添加到ArrayList都要封箱爲System.Object類型,從ArrayList取出數據時,要拆箱回實際的類型。建議使用自定義的集合類型代替ArrayList。.net 2.0提供了一個新的類型,叫泛型,這是一個強類型,使用泛型集合就可以避免了封箱和拆箱的發生,提高了性能。

2)使用HashTale代替其他字典集合類型(如StringDictionary,NameValueCollection,HybridCollection),存放少量數據的時候可以使用HashTable.

3)爲字符串容器聲明常量,不要直接把字符封裝在雙引號" "裏面。
      //避免
      //
      MyObject obj = new MyObject();
      obj.Status = "ACTIVE";

      //推薦
      const string C_STATUS = "ACTIVE";
      MyObject obj = new MyObject();
      obj.Status = C_STATUS;

4) 不要用UpperCase,Lowercase轉換字符串進行比較,用String.Compare代替,它可以忽略大小寫進行比較.
  
   例:
 
      const string C_VALUE = "COMPARE";
      if (String.Compare(sVariable, C_VALUE, true) == 0)
      {
      Console.Write("SAME");
      }


5) 用StringBuilder代替使用字符串連接符 “+”,.

      //避免
      String sXML = "<parent>";
      sXML += "<child>";
      sXML += "Data";
      sXML += "</child>";
      sXML += "</parent>";

      //推薦
      StringBuilder sbXML = new StringBuilder();
      sbXML.Append("<parent>");
      sbXML.Append("<child>");
      sbXML.Append("Data");
      sbXML.Append("</child>");
      sbXML.Append("</parent>");

6) If you are only reading from the XML object, avoid using XMLDocumentt, instead use XPathDocument, which is readonly and so improves performance.
如果只是從XML對象讀取數據,用只讀的XPathDocument代替XMLDocument,可以提高性能
      //避免
      XmlDocument xmld = new XmlDocument();
      xmld.LoadXml(sXML);
      txtName.Text = xmld.SelectSingleNode("/packet/child").InnerText;

.

      //推薦
      XPathDocument xmldContext = new XPathDocument(new StringReader(oContext.Value));
      XPathNavigator xnav = xmldContext.CreateNavigator();
      XPathNodeIterator xpNodeIter = xnav.Select("packet/child");
      iCount = xpNodeIter.Count;
      xpNodeIter = xnav.SelectDescendants(XPathNodeType.Element, false);
      while(xpNodeIter.MoveNext())
      {
      sCurrValues += xpNodeIter.Current.Value+"~";
      }


7) 避免在循環體裏聲明變量,應該在循環體外聲明變量,在循環體裏初始化。

      //避免
      for(int i=0; i<10; i++)
      {
      SomeClass objSC = new SomeClass();
      .
      .
      .

      }

      //推薦
      SomeClass objSC = null;
      for(int i=0; i<10; i++)
      {
      objSC = new SomeClass();
     
      .
      .
      .
      }

8) 捕獲指定的異常,不要使用通用的System.Exception.

      //避免
      try
      {
      <some logic>
      }
      catch(Exception exc)
      {
      <Error handling>
      }
     
      //推薦
      try
      {
      <some logic>
      }
      catch(System.NullReferenceException exc)
      {
      <Error handling>
      } 

;     catch(System.ArgumentOutOfRangeException exc)
      {
      <Error handling>
      }
      catch(System.InvalidCastException exc)
      {
      <Error handling>
      }

 

9) 使用Try...catch...finally時, 要在finally裏釋放佔用的資源如連接,文件流等
不然在Catch到錯誤後佔用的資源不能釋放。
       
        try
      {
         ...
      }
      catch
        {...}
        finally
        {
          conntion.close()
        }    
10) 避免使用遞歸調用和嵌套循環,使用他們會嚴重影響性能,在不得不用的時候才使用。

11) 使用適當的Caching策略來提高性能

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章