標籤:style blog http io ar os sp 檔案 on
今天在最佳化系統性的時候,想到了 ASP.NET 裡的 CompilationMode="Never", 因為使用者控制項裡沒有任何代碼, 只有控制項,把使用者控制項的編譯模式改為 Never 後,發現效能比不設定為 Never 還差一點。於是寫了一個簡單的測試頁面,專門測試了一下,發現 CompilationMode="Never" 效能卻實要差一點:
使用者控制項:
<%@ Control Language="C#" ClassName="WebUserControl" %><table> <tr> <td> <asp:TextBox runat="server" ID="TextBox1" /><br /> <asp:TextBox runat="server" ID="TextBox2" /><br /> <asp:TextBox runat="server" ID="TextBox3" /><br /> <asp:TextBox runat="server" ID="TextBox4" /><br /> <asp:TextBox runat="server" ID="TextBox5" /><br /> <asp:TextBox runat="server" ID="TextBox6" /><br /> <asp:TextBox runat="server" ID="TextBox7" /><br /> <asp:TextBox runat="server" ID="TextBox8" /><br /> <asp:TextBox runat="server" ID="TextBox9" /><br /> <asp:TextBox runat="server" ID="TextBox10" /><br /> <asp:TextBox runat="server" ID="TextBox11" /><br /> <asp:TextBox runat="server" ID="TextBox12" /><br /> <asp:TextBox runat="server" ID="TextBox13" /><br /> <asp:TextBox runat="server" ID="TextBox14" /><br /> <asp:TextBox runat="server" ID="TextBox15" /><br /> <asp:TextBox runat="server" ID="TextBox16" /><br /> <asp:TextBox runat="server" ID="TextBox17" /><br /> <asp:TextBox runat="server" ID="TextBox18" /><br /> <asp:TextBox runat="server" ID="TextBox19" /><br /> <asp:TextBox runat="server" ID="TextBox20" /> </td> </tr></table>
頁面代碼:
protected void Page_Load(object sender, EventArgs e){Stopwatch sw = new Stopwatch();sw.Start();var ctrl = this.LoadControl("WebUserControl.ascx");sw.Stop();this.Label1.Text = sw.Elapsed.TotalMilliseconds.ToString();}
在不設定的 CompilationMode 屬性的情況下:
第一次:235.7548
第二次:0.1019
第三次:0.0824
第四次:0.035
第五次:0.0963
設定 CompilationMode=“Never" 後的情況:
第一次:23.8643
第二次:0.1284
第三次:0.138
第四次:0.1119
第五次:0.1314
雖然兩都沒有太大的差距,但俺就是迸著效能最佳化來的。
系統裡由於使用者控制項分頁檔比測試的要大的多,所以測試的差距也在大得多。
如果效能還要差,微軟還搞這個選項來做什麼,不知道是不是我的測試有問題呢?
EDFX 快速開發平台
一個開放原始碼的快速開發平台
關於 ASP.NET 的 CompilationMode="Never" 效能問題