提高asp.net编译运行速度

1)避免使用ArrayList,因为对象要转化为System.Object加入ArrayList,取出时又要转化为想要的类型,设计到大量的装箱拆箱过程,推荐使用自定义集合取代ArrayList,.net还在System.Collection.Specialized命名空间下为string提供了一个强类型的集合类StringCollection

 

2)用Hashtable 取代其他字典类型,如:StringDictionary, NameValueCollection, HybridCollection。

 

3)经常为字符串声明常量来封装他们

   //避免

   MyObject obj = new MyObject();

   obj.Status = "ACTIVE";

   //推荐   

   const string C_STATUS = "ACTIVE";

   MyObject obj = new MyObject();

   obj.Status = C_STATUS;

 

 

4)使用String.Compare取代将两个字符串转化为uppercase或lowercase再来比较他们

   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)对于只读xml文档,用XPathDocument取代XMLDocumentt

   //避免

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

   }

 

下面是专门针对Web程序性能的设计方针:

1) Viewstate 会动态增加页面体积,所以要小心的使用控件的Viewstate 属性。

2) 尽可能使用ajax。

3) 使用server.tranfer取代response.redirect。

4) 尽可能使用repeater和datalist取代datagrid。

5) 尽量避免Throw来控制程序流程,因为Throw会消耗大量资源。

6) 避免过度使用异常处理程序块,只在你无法控制的地方做异常处理。

7) 大量dataset很昂贵,尽量一次取得最多的数据,然后销毁dataset

8) 使用缓存

9) 使用合适的认证机制

10)使用Finally方法释放资源

11)网站发布后将Debug和trace设为false。

 

其他几个技巧:

一、

  1,禁止页面的视图状态,<%   Page   EnableViewState="false"   %>  

    禁止单独控件,<asp:DataGrid   EnableViewState="false"     runat=server   />  

    禁止整个应用程序web.config   <Pages   EnableViewState="false"   />  

  2,管理会话状态  

      web.config   <Session   Mode="off"/>   

二、

  1、后台数据操作用存储过程  

  2、和数据无关的操作最好用客户端js完成  

  3、发布后web.config中  

          <compilation   defaultLanguage="c#"   debug="false"   />  

  4、用DataReader比DataSet快  

  5、分页最好在后台做  

  6、用缓存

三、

  尽量少用服务器端控件,一般情况下用服务器端(runat=server)控件会使性能损失30-50%左右。

posted @ 2012-07-02 16:12  Trilyn  阅读(330)  评论(0)    收藏  举报