熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> .NET編程 >> 正文

Repeater控件測試Web控件的執行效率

2013-11-13 10:20:58  來源: .NET編程 

  測試環境: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樣式來提升頁面執行效率


From:http://tw.wingwit.com/Article/program/net/201311/13331.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.