环境:.net 4.0+ vs2012.3。
简单三层结构,二种写法的情能为什么会差别如此之大?
第一种写法:在index.aspx.cs中写以下方法“
protected List<NewChapterViewModel> newchapter(int count) { return new NewChapterBLL().GetList(count); }
在index.aspx前台页面使用for循环语句:
<% for (int i = 0; i < newchapter(40).Count; i++) { %> <%=newchapter(40)[i].AddDate%> <%} %>
第二种写法:index.aspx.cs中
protected List<NewChapterViewModel> newchapter = new List<NewChapterViewModel>(); protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { categorylist = new CategoryBLL().GetAllByParentID(0); newchapter = new NewChapterBLL().GetList(40); } }
index.aspx页面中
<% for (int i = 0; i < newchapter.Count; i++) { %> <li><b><%=newchapter[i].AddDate%></b></li> <%}%
为什么第二种写法的性能要比第一种高好几倍?
同样是取40条内容,第二种方法能秒刷出来,第一种方法就需要10秒左右。
newchapter(40)函数调用,要去加载数据的。。。
你难道没发现,你的第一种写法,要调用N次newchapter()方法吗?
谢谢上面二位提醒,断点走了一下,的确会走N次newchapter()方法。
而改用foreach速度就快了。