国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

如何最大限度提高.NET的性能

2019-11-18 16:52:45
字體:
供稿:網(wǎng)友

優(yōu)化 .NET的性能

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

2)使用HashTale代替其他字典集合類型(如StringDictionary,NameValueCollection,HybridCollection),存放少量數(shù)據(jù)的時候可以使用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轉(zhuǎn)換字符串進(jìn)行比較,用String.Compare代替,它可以忽略大小寫進(jìn)行比較.
  
   例:
 
      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對象讀取數(shù)據(jù),用只讀的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) 避免在循環(huán)體里聲明變量,應(yīng)該在循環(huán)體外聲明變量,在循環(huán)體里初始化。

      //避免
      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) 避免使用遞歸調(diào)用和嵌套循環(huán),使用他們會嚴(yán)重影響性能,在不得不用的時候才使用。

11) 使用適當(dāng)?shù)腃aching策略來提高性能
好了 今天就寫到這里,  以后有空再寫。

http://www.survivalescaperooms.com/timone/archive/2006/11/17/563965.html


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 大姚县| 三亚市| 黑水县| 芦溪县| 丘北县| 洮南市| 景宁| 海兴县| 南昌县| 沐川县| 高唐县| 东宁县| 西峡县| 株洲县| 丹东市| 娱乐| 清新县| 西乡县| 封丘县| 抚远县| 亳州市| 南丰县| 陇川县| 旌德县| 周宁县| 富锦市| 吴川市| 开封县| 福海县| 神农架林区| 垦利县| 张北县| 阿荣旗| 二连浩特市| 周口市| 昌江| 齐齐哈尔市| 康乐县| 青铜峡市| 丹阳市| 高台县|