zoukankan      html  css  js  c++  java
  • 优化 .NET的性能[ 转CSDN]

    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策略来提高性能

                                      

  • 相关阅读:
    成佛、远不止渡沧海
    导航栏中各按钮在点击当前按钮变色其他按钮恢复为原有色的实现方法(vue、jq、原生js)
    vue动态绑定src加字符串拼接
    对象中那些不注意的用法
    vue实现实时监听文本框内容的变化(最后一种为原生js)
    table
    toFixed()精度丢失;复选框全选、取消
    vue.js
    vue项目知识点总结
    JVM基础知识总结
  • 原文地址:https://www.cnblogs.com/chenfulai/p/692441.html
Copyright © 2011-2022 走看看