以下文档转载自网络,供开发asp.net项目的朋友们参考使用:
提高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。
其他几个技巧:
一、by caoit(lost)
1,禁止页面的视图状态,<% Page EnableViewState="false" %>
禁止单独控件,<asp:DataGrid EnableViewState="false" runat=server />
禁止整个应用程序web.config <Pages EnableViewState="false" />
2,管理会话状态
web.config <Session Mode="off"/>
3,输出高速缓存
二、by udonome(。)(。)
1、后台数据操作用存储过程
2、和数据无关的操作最好用客户端js完成
3、发布后web.config中
<compilation defaultLanguage="c#" debug="false" />
4、用DataReader比DataSet快
5、分页最好在后台做
6、用缓存
三、by shangyusoft.com
尽量少用服务器端控件,一般情况下用服务器端(runat=server)控件会使性能损失30-50%左右。
编者按:文中前面部分未找到原文来源,无法注明作者,在此感谢。