熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> .NET編程 >> 正文

優化 .NET的性能

2013-11-13 10:27:26  來源: .NET編程 

  )避免使用ArrayList

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

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

  )為字符串容器聲明常量不要直接把字符封裝在雙引號 裡面

         //避免

  //

  MyObject obj = new MyObject();

  objStatus = ACTIVE;

  //推薦

  const string C_STATUS = ACTIVE;

  MyObject obj = new MyObject();

  objStatus = C_STATUS;

  ) 不要用UpperCaseLowercase轉換字符串進行比較用StringCompare代替它可以忽略大小寫進行比較

  例

         const string C_VALUE = COMPARE;

  if (StringCompare(sVariable C_VALUE true) == )

  {

  ConsoleWrite(SAME);

  }

  ) 用StringBuilder代替使用字符串連接符 +

  

         //避免

  String sXML = ;

  sXML += ;

  sXML += Data;

  sXML += ;

  sXML += ;

  //推薦

  StringBuilder sbXML = new StringBuilder();

  sbXMLAppend( );

  sbXMLAppend();

  sbXMLAppend(Data);

  sbXMLAppend();

  sbXMLAppend();

  ) 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();

  xmldLoadXml(sXML);

  txtNameText = xmldSelectSingleNode(/packet/child)InnerText;

  

  //推薦

  XPathDocument xmldContext = new XPathDocument(new StringReader(oContextValue));

  XPathNavigator xnav = xmldContextCreateNavigator();

  XPathNodeIterator xpNodeIter = xnavSelect(packet/child);

  iCount = xpNodeIterCount;

  xpNodeIter = xnavSelectDescendants(XPathNodeTypeElement false);

  while(xpNodeIterMoveNext())

  {

  sCurrValues += xpNodeIterCurrentValue+~;

  }

  ) 避免在循環體裡聲明變量應該在循環體外聲明變量在循環體裡初始化

         //避免

  for(int i=; i<; i++)

  {

  SomeClass objSC = new SomeClass();

  

  

  

  }

  //推薦

  SomeClass objSC = null;

  for(int i=; i<; i++)

  {

  objSC = new SomeClass();

  

  

  

  }

  ) 捕獲指定的異常不要使用通用的SystemException  

         //避免

  try

  {

  

  }

  catch(Exception exc)

  {

  

  }

  //推薦

  try

  {

  

  }

  catch(SystemNullReferenceException exc)

  {

  

  }

  catch(SystemArgumentOutOfRangeException exc)

  {

  

  }

  catch(SystemInvalidCastException exc)

  {

  

  }

  ) 使用Trycatchfinally時 要在finally裡釋放占用的資源如連接文件流等

  不然在Catch到錯誤後占用的資源不能釋放

         try

  {

  

  }

  catch

  {}

  finally

  {

  conntionclose()

  }

  ) 避免使用遞歸調用和嵌套循環使用他們會嚴重影響性能在不得不用的時候才使用

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


From:http://tw.wingwit.com/Article/program/net/201311/13693.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.