[测试]Gridview绑定SqlDataReader+IList<T>和SqlDataAdapter+DataSet的效率
2009-06-20 22:17
513 查看
1,SqlDataAdapter+DataSet
protected void Page_Load(object sender, EventArgs e)
{
Stopwatch sp = new Stopwatch();
sp.Start();
for (int i = 0; i < 10000; i++)
{
Band_DataSet();
}
sp.Stop();
Response.Write(sp.ElapsedMilliseconds.ToString() + "<br>");
}
private void Band_DataSet()
{
SqlConnection conn = new SqlConnection();
conn.ConnectionString = "";
conn.Open();
SqlCommand cmd = new SqlCommand();
cmd.CommandText = "select * FROM province";
cmd.CommandType = CommandType.Text;
cmd.Connection = conn;
SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand = cmd;
DataSet ds = new DataSet();
da.Fill(ds);
conn.Close();
GridView1.DataSource = ds.Tables[0].DefaultView;
GridView1.DataBind();
}
结果,测试了4组:
Band_DataSet():单位MS
10712
10595
11018
10500
去掉第一组,平均为:10704
2,SqlDataReader+IList<T>
protected void Page_Load(object sender, EventArgs e)
{
Stopwatch sp = new Stopwatch();
sp.Start();
for (int i = 0; i < 10000; i++)
{
Band_DataReader();
}
sp.Stop();
Response.Write(sp.ElapsedMilliseconds.ToString() + "<br>");
}
private void Band_DataReader()
{
IList<Province> province = new List<Province>();
SqlConnection conn = new SqlConnection();
conn.ConnectionString = "server=.;database=mytest;uid=myid;pwd=myid;";
conn.Open();
SqlCommand cmd = new SqlCommand();
cmd.CommandText = "select * FROM province";
cmd.CommandType = CommandType.Text;
cmd.Connection = conn;
SqlDataReader dr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
while (dr.Read())
{
Province p = new Province(dr[1].ToString(), dr[2].ToString());
province.Add(p);
}
dr.Close();
conn.Close();
GridView1.DataSource = province;
GridView1.DataBind();
}
Model类:
public class Province
{
public Province()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
public Province(string _provinceID, string _provinceName)
{
provinceID = _provinceID;
provinceName = _provinceName;
}
private string provinceID;
private string provinceName;
public string ProvinceID
{
get { return this.provinceID; }
set { this.provinceID = value; }
}
public string ProvinceName
{
get { return this.provinceName; }
set { this.provinceName = value; }
}
}
同样测试4组:
Band_DataReader():单位:ms
7238
7222
7231
7141
去掉第一组,平均:7198
可见,datareader的效率高,后者只有前者的67%的时间。
ps:个人单纯的测试,可能有考虑不周的地方。
protected void Page_Load(object sender, EventArgs e)
{
Stopwatch sp = new Stopwatch();
sp.Start();
for (int i = 0; i < 10000; i++)
{
Band_DataSet();
}
sp.Stop();
Response.Write(sp.ElapsedMilliseconds.ToString() + "<br>");
}
private void Band_DataSet()
{
SqlConnection conn = new SqlConnection();
conn.ConnectionString = "";
conn.Open();
SqlCommand cmd = new SqlCommand();
cmd.CommandText = "select * FROM province";
cmd.CommandType = CommandType.Text;
cmd.Connection = conn;
SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand = cmd;
DataSet ds = new DataSet();
da.Fill(ds);
conn.Close();
GridView1.DataSource = ds.Tables[0].DefaultView;
GridView1.DataBind();
}
结果,测试了4组:
Band_DataSet():单位MS
10712
10595
11018
10500
去掉第一组,平均为:10704
2,SqlDataReader+IList<T>
protected void Page_Load(object sender, EventArgs e)
{
Stopwatch sp = new Stopwatch();
sp.Start();
for (int i = 0; i < 10000; i++)
{
Band_DataReader();
}
sp.Stop();
Response.Write(sp.ElapsedMilliseconds.ToString() + "<br>");
}
private void Band_DataReader()
{
IList<Province> province = new List<Province>();
SqlConnection conn = new SqlConnection();
conn.ConnectionString = "server=.;database=mytest;uid=myid;pwd=myid;";
conn.Open();
SqlCommand cmd = new SqlCommand();
cmd.CommandText = "select * FROM province";
cmd.CommandType = CommandType.Text;
cmd.Connection = conn;
SqlDataReader dr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
while (dr.Read())
{
Province p = new Province(dr[1].ToString(), dr[2].ToString());
province.Add(p);
}
dr.Close();
conn.Close();
GridView1.DataSource = province;
GridView1.DataBind();
}
Model类:
public class Province
{
public Province()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
public Province(string _provinceID, string _provinceName)
{
provinceID = _provinceID;
provinceName = _provinceName;
}
private string provinceID;
private string provinceName;
public string ProvinceID
{
get { return this.provinceID; }
set { this.provinceID = value; }
}
public string ProvinceName
{
get { return this.provinceName; }
set { this.provinceName = value; }
}
}
同样测试4组:
Band_DataReader():单位:ms
7238
7222
7231
7141
去掉第一组,平均:7198
可见,datareader的效率高,后者只有前者的67%的时间。
ps:个人单纯的测试,可能有考虑不周的地方。
相关文章推荐
- SqlDataReader to IList<T>
- Winform开发常用控件之DataGridView的简单数据绑定——代码绑定DataSet、DataTable、IList、SqlDataReader
- [网络收集]ASP.NET两种办法给DropDownList绑定SqlDataReader 及在gridview等控件中绑定dropdownlist的简单方法
- sql 查询语法汇总(三)SqlDataReader 与SqlDataAdapter+DataSet 的区别
- sqlconnection,sqlcommand,sqldataadapter,sqldatareader,dataset都是做什么用的?
- DataSet、SqlDataAdapter、SqlCommand、ExecuteNonQuery、SqlDataReader
- Dev GridView 绑定List<T>、BindingList <T>、BindingSource
- sqlconnection,sqlcommand,sqldataadapter,sqldatareader,dataset
- Dev GridView 绑定List<T>、BindingList <T>、BindingSource
- 白话SqlConnection,SqlCommand,SqlDataAdapter,SqlDataReader,DataSet
- GridView绑定SqlDataReader自动关闭连接
- SqlDataReader SqlDataAdapter DataSet
- 白话SqlConnection,SqlCommand,SqlDataAdapter,SqlDataReader,DataSet
- 源码: C#操作SQL数据库 SQLDataReader/SQLDataAdapter/DataSet/DataTable
- .NET深入学习笔记(1):DataSet和SqlDataReader性能差异深入剖析与测试(1)
- SqlDataReader 与SqlDataAdapter+DataSet 的区别
- DataSet,SqlDataAdapter,SqlCommand,SqlDataReader
- .NET深入学习笔记(1):DataSet和SqlDataReader性能差异深入剖析与测试(2)
- GridView绑定List<T>时要把自动生成行
- Gridview 绑定泛型List<T> 排序方法