优化大师性能评估:优化 .NET的性能



  1)避免使用ArrayList

  任何对象添加到ArrayList都要封箱为.Object类型从ArrayList取出数据时要拆箱回实际类型建议使用自定义集合类型代替ArrayList.net 2.0提供了个新类型叫泛型这是个强类型使用泛型集合就可以避免了封箱和拆箱发生提高了性能

  2)使用HashTale代替其他字典集合类型(如StringDictionary,NameValueCollection,HybridCollection)存放少量数据时候可以使用HashTable.

  3)为串容器声明常量不要直接把封装在双引号" "里面

   //避免   //

  MyObject obj = MyObject;

  obj.Status = "ACTIVE";

  //推荐

  const C_STATUS = "ACTIVE";

  MyObject obj = MyObject;

  obj.Status = C_STATUS;



  4) 不要用UpperCase,Lower转换串进行比较用String.Compare代替它可以忽略大小写进行比较.

  例:

   const C_VALUE = "COMPARE";    (String.Compare(sVariable, C_VALUE, true) 0)

  {

  Console.Write("SAME");

  }



  5) 用StringBuilder代替使用串连接符 “+”.

  

//避免   String sXML = "

";

  sXML "";

  sXML "Data";

  sXML "";

  sXML "";

  //推荐

  StringBuilder sbXML = StringBuilder;

  sbXML.Append("

");

  sbXML.Append("");

  sbXML.Append("Data");

  sbXML.Append("");

  sbXML.Append("");





  6) If you are _disibledevent=>



   //避免   XmlDocument xmld = XmlDocument;

  xmld.LoadXml(sXML);

  txtName.Text = xmld.SelectSingleNode("/packet/child").InnerText;

  .

  //推荐

  XPathDocument xmldContext = XPathDocument( 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( i=0; i<10; i)

  {

  SomeClass objSC = SomeClass;

  .

  .

  .

  }

  //推荐

  SomeClass objSC = null;

  for( i=0; i<10; i)

  {

  objSC = SomeClass;

  .

  .

  .

  }





 8) 捕获指定异常不要使用通用.Exception.

   //避免   try

  {

  

  }

  catch(Exception exc)

  {

  

  }

  //推荐

  try

  {

  

  }

  catch(.NullReferenceException exc)

  {

  

  }

  catch(.ArgumentOutOfRangeException exc)

  {

  

  }

  catch(.InvalidCastException exc)

  {

  

  }



  9) 使用Try...catch...finally时 要在finally里释放占用资源如连接文件流等

  不然在Catch到后占用资源不能释放

   try   {

  ...

  }

  catch

  {...}

  finally

  {

  conntion.close

  }



  10) 避免使用递归和嵌套循环使用他们会严重影响性能在不得不用时候才使用

  11) 使用适当Caching策略来提高性能

Tags:  数据库性能优化 性能优化 为提高性能而优化

延伸阅读

最新评论

发表评论