提高.NET性能的最佳实践

来源:互联网 发布:软件培训老师 编辑:程序博客网 时间:2024/06/05 20:39
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。
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 行驶证丢了怎么办补办 行驶证丢了怎么办异地 浦发信用卡盗刷怎么办 苹果id被盗变砖怎么办 信用卡丢了被刷怎么办 ins注册不了怎么办安卓 偷玩电脑被发现怎么办 做作业不认真的怎么办 老人脑供血不足怎么办 哺乳期吃了辣的怎么办 孕32周胎位臀位怎么办 怀孕32周胎位不正怎么办 7个月胎位不正怎么办 胎心监护老不过怎么办 8个月了胎位不正怎么办 怀孕八个月了胎位不正怎么办 怀孕八个月胎位不正怎么办 欠债的人跑了怎么办 赌博输了100万怎么办 我赌博输了4万怎么办 办80张信用卡怎么办的 19岁负债十几万怎么办 欠了十几万该怎么办 网贷负债十几万怎么办 赌博欠了十几万怎么办 欠了网贷跑了会怎么办 欠银行钱还不起怎么办 欠小额贷款公司的钱还不上怎么办 负债30万没工作怎么办 华为p9耗电太快怎么办 酷派手机反应慢怎么办 网上买手机被骗了怎么办 买手机贵了怎么办12315 在手机店被骗了怎么办 在转转上被骗了怎么办 微信被骗了800怎么办 苹果6被偷走该怎么办 苹果7被偷走该怎么办 月经量突然少了怎么办 我月经老是不来怎么办 月经不来3个月怎么办