zoukankan      html  css  js  c++  java
  • 如何最大限度提高.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) 使用Trycatchfinally时, 要在finally里释放占用的资源如连接,文件流等
    不然在Catch到错误后占用的资源不能释放。
            
            
    try
          
    {
             
          }

          
    catch 
            
    {}
            
    finally
            
    {
              conntion.close()
            }
         
    10) 避免使用递归调用和嵌套循环,使用他们会严重影响性能,在不得不用的时候才使用。

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

  • 相关阅读:
    form表单中name和id区别
    为什么我做网站开发不使用前端框架
    设置GridView表头的背景图片
    input文本框隐藏边框
    如何在asp.net页面使用css和js
    HTML与XHTML的差别
    asp.net实现关闭当前网页功能
    asp.net判断文件或文件夹是否存在
    asp.net自定义错误页面
    asp.net中textbox获得焦点后清空默认文本
  • 原文地址:https://www.cnblogs.com/kokoliu/p/734585.html
Copyright © 2011-2022 走看看