1,测试变量和Datarow的访问
代码一:
private void button1_Click_1(object sender, EventArgs e) { StringBuilder sb = new StringBuilder(); DateTime d1 = DateTime.Now; for (int i = 0; i < 20; i++) { try { string strSql = "select top 100 * from t_csp_vesselschedule "; DataTable dt = db.ExecuteDataSet(CommandType.Text, strSql).Tables[0]; foreach (DataRow d in dt.Rows) { string a1 = d["id"].ToString(); for (int m = 0; m < 1000; m++) { sb.Append(a1); } } } catch(Exception ex) { throw ex; } } DateTime d2 = DateTime.Now; TimeSpan t1=d2-d1; label1.Text = t1.TotalMilliseconds.ToString(); textBox3.Text = label1.Text; }
代码二:
private void button3_Click(object sender, EventArgs e) { StringBuilder sb = new StringBuilder(); DateTime d1 = DateTime.Now; for (int i = 0; i < 20; i++) { try { string strSql = "select top 100 * from t_csp_vesselschedule "; DataTable dt = db.ExecuteDataSet(CommandType.Text, strSql).Tables[0]; foreach (DataRow d in dt.Rows) { //string a1 = d["id"].ToString(); for (int m = 0; m < 1000; m++) { sb.Append(d["id"].ToString()); } } } catch (Exception ex) { throw ex; } } DateTime d2 = DateTime.Now; TimeSpan t1 = d2 - d1; label2.Text = t1.TotalMilliseconds.ToString(); textBox4.Text = label2.Text; }
测试结果:
- 代码段一的时间546.875
- 代码段二的时间3890.625
2,测试变量和datareader的访问,替换对应的数据库对象后测试结果如下:
- 531.25;
- 2578.125
总结:
- 在对同一数据库字段访问不频繁的情况下建议使用原对象,否则请先赋值给变量;
- 代码段2的耗时不稳定,有的时候代码段2的本身耗时相差2倍
本文通过两个不同的代码片段对比了在C#中直接访问DataRow和DataRead的性能差异。实验结果显示,在对同一数据库字段频繁访问时,先将数据赋值给变量能够显著提高效率。

被折叠的 条评论
为什么被折叠?



