zoukankan      html  css  js  c++  java
  • [测试]Gridview绑定SqlDataReader+IList<T>和SqlDataAdapter+DataSet的效率

    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:个人单纯的测试,可能有考虑不周的地方。

  • 相关阅读:
    例行更新,防止被踢
    C语言 遍历磁盘目录
    析构函数的调用
    数组学习笔记
    函数学习笔记
    c++语言 纯虚函数的使用
    c++语言 内联方法
    复制构造函数
    c++语言 覆盖成员函数
    面向对象程序设计
  • 原文地址:https://www.cnblogs.com/conan304/p/1507508.html
Copyright © 2011-2022 走看看