您的位置:首页 > 数据库

[测试]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:个人单纯的测试,可能有考虑不周的地方。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: