提高.NET性能的最佳实践
生活随笔
收集整理的這篇文章主要介紹了
提高.NET性能的最佳实践
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
1)避免使用ArrayList,因?yàn)閷ο笠D(zhuǎn)化為System.Object加入ArrayList,取出時(shí)又要轉(zhuǎn)化為想要的類型,設(shè)計(jì)到大量的裝箱拆箱過程,推薦使用自定義集合取代ArrayList,.net還在System.Collection.Specialized命名空間下為string提供了一個(gè)強(qiáng)類型的集合類StringCollection
?
2)用Hashtable 取代其他字典類型,如:StringDictionary, NameValueCollection, HybridCollection。
?
3)經(jīng)常為字符串聲明常量來封裝他們
? ?//避免
? ?MyObject obj = new MyObject();
? ?obj.Status = "ACTIVE";?
? ?//推薦 ? ?
? ?const string C_STATUS = "ACTIVE";
? ?MyObject obj = new MyObject();
? ?obj.Status = C_STATUS;
?
4)使用String.Compare取代將兩個(gè)字符串轉(zhuǎn)化為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)避免在循環(huán)體類聲明并初始化對象,而應(yīng)該在循環(huán)體外聲明,在循環(huán)體類初始化!
? ?//避免
? ?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程序性能的設(shè)計(jì)方針
1) Viewstate 會(huì)動(dòng)態(tài)增加頁面體積,所以要小心的使用控件的Viewstate 屬性。
2) 盡可能使用ajax。
3) 使用server.tranfer取代response.redirect。
4) 盡可能使用repeater和datalist取代datagrid。
5) 盡量避免Throw來控制程序流程,因?yàn)門hrow會(huì)消耗大量資源。
6) 避免過度使用異常處理程序塊,只在你無法控制的地方做異常處理。
7) 大量dataset很昂貴,盡量一次取得最多的數(shù)據(jù),然后銷毀dataset
8) 使用緩存
9) 使用合適的認(rèn)證機(jī)制
10)使用Finally方法釋放資源
11)網(wǎng)站發(fā)布后將Debug和trace設(shè)為false。
?
2)用Hashtable 取代其他字典類型,如:StringDictionary, NameValueCollection, HybridCollection。
?
3)經(jīng)常為字符串聲明常量來封裝他們
? ?//避免
? ?MyObject obj = new MyObject();
? ?obj.Status = "ACTIVE";?
? ?//推薦 ? ?
? ?const string C_STATUS = "ACTIVE";
? ?MyObject obj = new MyObject();
? ?obj.Status = C_STATUS;
?
4)使用String.Compare取代將兩個(gè)字符串轉(zhuǎn)化為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)避免在循環(huán)體類聲明并初始化對象,而應(yīng)該在循環(huán)體外聲明,在循環(huán)體類初始化!
? ?//避免
? ?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程序性能的設(shè)計(jì)方針
1) Viewstate 會(huì)動(dòng)態(tài)增加頁面體積,所以要小心的使用控件的Viewstate 屬性。
2) 盡可能使用ajax。
3) 使用server.tranfer取代response.redirect。
4) 盡可能使用repeater和datalist取代datagrid。
5) 盡量避免Throw來控制程序流程,因?yàn)門hrow會(huì)消耗大量資源。
6) 避免過度使用異常處理程序塊,只在你無法控制的地方做異常處理。
7) 大量dataset很昂貴,盡量一次取得最多的數(shù)據(jù),然后銷毀dataset
8) 使用緩存
9) 使用合適的認(rèn)證機(jī)制
10)使用Finally方法釋放資源
11)網(wǎng)站發(fā)布后將Debug和trace設(shè)為false。
總結(jié)
以上是生活随笔為你收集整理的提高.NET性能的最佳实践的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 企业即时通讯市场增长500%
- 下一篇: 为什么飞鸽得以传书