[转帖]提高.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取代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();
   }

下面是专门针对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。

转载于:https://www.cnblogs.com/hopeiyoyo/archive/2007/12/06/984532.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值