.net性能研究1-DataSet和DataReader的性能对比

本文所有的测试环境如下:

  • 数据库操作:Enterprise Library 3.1
  • 数据库:Sql server 2005
  • 硬件:E2140 双核1.6 内存1G
  • Framework 2.0
  • Vs.net 2005

对比DataSet和DataReader的性能:

DataSet的测试代码如下:

private void button1_Click_1(object sender, EventArgs e) { StringBuilder sb = new StringBuilder(); DateTime d1 = DateTime.Now; for (int i = 0; i < 2000; 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) { sb.Append(d["id"].ToString()); sb.Append(d["carriercode"].ToString()); sb.Append(d["vesselvoyage"].ToString()); } } catch(Exception ex) { throw ex; } } DateTime d2 = DateTime.Now; TimeSpan t1=d2-d1; label1.Text = t1.TotalMilliseconds.ToString(); textBox3.Text = label1.Text; }

DataReader的测试代码如下:

private void button3_Click(object sender, EventArgs e) { StringBuilder sb = new StringBuilder(); DateTime d1 = DateTime.Now; for (int i = 0; i < 2000; i++) { try { string strSql = "select top 100 * from t_csp_vesselschedule "; IDataReader dr = db.ExecuteReader(CommandType.Text, strSql); while (dr.Read()) { sb.Append(dr["id"].ToString()); sb.Append(dr["carriercode"].ToString()); sb.Append(dr["vesselvoyage"].ToString()); } dr.Close(); } catch { } } DateTime d2 = DateTime.Now; TimeSpan t1 = d2 - d1; label2.Text = t1.TotalMilliseconds.ToString(); textBox4.Text = label2.Text; }

测试结果是:

  1. DataSet 7031.25;
  2. DataReader 4843.75;
  3. 很明显DataReader要快于DataSet,但是值得提醒的是在出现异常的情况下,要注意DataReader对象在finally中的关闭,否则会造成Reader对象未关闭,数据库出现无数的连接;
  4. 需要提醒的是DataSet本身都是来源于DataReader,只是把数据包装了;
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值