测试环境:SDK+vs+Sql+WindowXp
建立测试工程
新建页面使用Web控件Repeater:
HTML页面
<%@ Page Language=C# AutoEventWireup=true CodeFile=Defaultaspxcs Inherits=_Default %>
<!DOCTYPE html PUBLIC //WC//DTD XHTML Transitional//EN transitionaldtd>
<html xmlns= >
<head runat=server>
<title>使用Web控件</title>
</head>
<body>
<form id=form runat=server>
<div>
<asp:Repeater ID=Repeater runat=server>
<ItemTemplate>
<%#Eval(Comp_Name) %><%#Eval(Comp_ID) %><br />
</ItemTemplate>
</asp:Repeater>
</div>
</form>
<%=(SystemEnvironmentTickCountts) %>
</body>
</html>
CS文件:
protected int ts;
protected void Page_Load(object sender EventArgs e)
{
ts = EnvironmentTickCount;
string connstring = SystemConfigurationConfigurationManagerConnectionStrings[ConnStr]ToString();
SqlConnection myconn = new SqlConnection(connstring);
SqlCommand cmd = new SqlCommand(select * from TB_Info myconn);
myconnOpen();
SqlDataReader dr = cmdExecuteReader();
RepeaterDataSource = dr;
RepeaterDataBind();
drClose();
drDispose();
myconnClose();
myconnDispose();
}
按F执行数据量约条多次测试耗时在ms附近浮动
新建页面不使用Web控件
HTML代码:
<%@ Page Language=C# AutoEventWireup=true CodeFile=Defaultaspxcs Inherits=Default %>
<!DOCTYPE html PUBLIC //WC//DTD XHTML Transitional//EN transitionaldtd>
<html xmlns= >
<head runat=server>
<title>不使用Web控件</title>
</head>
<body>
<form id=form runat=server>
<div>
<%while (drRead()) { %>
<%=dr[Comp_Name]%><%=dr[Comp_ID]%><br />
<% } %>
</div>
</form>
<%
drClose();
drDispose();
myconnClose();
myconnDispose();
%>
<%=(SystemEnvironmentTickCountts) %>
</body>
</html>
CS代码
protected int ts;
protected SqlConnection myconn;
protected SqlDataReader dr;
protected void Page_Load(object sender EventArgs e)
{
ts = EnvironmentTickCount;
string connstring = SystemConfigurationConfigurationManagerConnectionStrings[ConnStr]ToString();
myconn = new SqlConnection(connstring);
SqlCommand cmd = new SqlCommand(select * from TB_Info myconn);
myconnOpen();
dr = cmdExecuteReader();
}
F测试数据量约条执行时间在MS以下
下面截图是多次测试的数据比较
Defaultaspx是使用web控件的页面Defaultaspx是未使用web控件的页面从上图可以看出不仅在执行效率上存在差距而且在数据大小上也存在很大的差距在使用web控件的时候为了保存当前状态我们在源代码中发现一个<input type=hidden name=__VIEWSTATE id=__VIEWSTATE> 该隐藏域所保存的数据量是相当大的所有页面数据会存在差距好那么我们把页面的<form runat=server>删除使得它不能存在上面的隐藏域再进行测试
从上图我们可以看到defaultaspx页面大小变小了很多而且速率也提升了很多然而性能整体上还是落后于defaultaspx而且经多次测试发现数据量越大该差距越明显当数据量少时性能相差无几但是如果考虑同时在线人数的话那么性能的差别又会体现出来
总结
有人会说defaultaspx的写法是asp写法页面代码不能分离没错写法确实不怎么好看但是效率比使用web控件的效率要高很多Web控件最后呈现的样式也是html代码因此个人认为在考虑性能的情况下我们应尽量少用web控件多使用asp样式来提升页面执行效率