技术开发 频道

项目分析:原生对象前端加载数据性能PK

  5. 在我的实例中,大家也许注意到了有“原生Html赋值”和“jQuery Dom赋值”的单选按钮,这是什么呢?很简单,前者就是形如document.getElementById(‘…’),后者就是我们项目中使用的$('#…’).html(‘…’)这样的形式。这两种创建DOM元素上有什么差别吗?用测试说话。

  我任意挑选几张对比截图:

  测试说明:使用原生对象Html赋值比jQuery的Html赋值性能上提升了许多;换句话,就是尽量多使用document.getElementById(‘…’)这样来赋值。

  6. 最后我们通过cs代码隐藏文件加载数据

  代码

protected void Page_Load(object sender, EventArgs e)

  {

  Stopwatch watch
= new Stopwatch();

  watch.Start();

  
int count = Convert.ToInt32(ConfigurationManager.AppSettings["DataCount"]);

  List list
= new List();

  
for (int i = 0; i < count; i++)

  {

  list.Add(
new UserInfo { UserId = i, UserName = "leepy" + i, Email = "sunleepy" + i + "@gmail.com" });

  }

  StringBuilder builder
= new StringBuilder();

  
for (int i = 0, length = list.Count; i < length; i++)

  {

  builder.AppendFormat(
"

UserId:{
0}, UserName:{1}, Email:{2}
", list[i].UserId, list[i].UserName, list[i].Email);


  }

  msg7.InnerHtml
= builder.ToString();

  time7.Text
= "用时:" + watch.ElapsedMilliseconds + "毫秒.";

  }

  
public int GetDataCount()

  {

  return Convert.ToInt32(ConfigurationManager.AppSettings[
"DataCount"]);

  }

 

  运行结果为:

  使用后台代码进行页面上的业务逻辑实现是相当高效的。

  测试说明:在页面第一次加载的时候,尽量能够在服务端后台代码对服务器控件进行数据绑定,也就是说多使用runat=”server”这样的服务端控件,特别可以充分使用repeater控件的优势来进行数据绑定。

  总结

  再把前面的测试结果列举一下:

  1. .ajax,$.getJSON,原生对象返回JSON加载数据的效率基本一样,比WebService的效率好些。

  2. $.ajax,$.getJSON,原生对象返回返回Html字符串加载数据的效率基本一样,比WebService的效率好些;

  3. 通过测试3和测试4的比较,说明通过在后台拼接Html字符串,比在前台来拼接的过程来得更高效。

  4. 使用原生对象Html赋值比jQuery的Html赋值性能上提升了许多;换句话,就是尽量多使用document.getElementById(‘…’)这样来赋值。

  5. 在页面第一次加载的时候,尽量能够在服务端后台代码对服务器控件进行数据绑定,也就是说多使用runat=”server”这样的服务端控件,特别可以充分使用repeater控件的优势来进行数据绑定。

  这是我对于前端页面加载数据时,通过几种方式测试得出来的结果以及结论,如果不妥的地方,希望大家能够提出,欢迎交流,谢谢指教:)

0
相关文章