SqlDataReader vs SqlDataAdapter: który z nich ma lepszą wydajność do zwracania DataTable?

Chcę wiedzieć, która z nich ma lepszą wydajność w przypadku powrotuDataTable. Tutaj dlaSqlDataReader używamDataTable.Load(dr)

Za pomocąSqlDataReader:

public static DataTable populateUsingDataReader(string myQuery)
{
    DataTable dt = new DataTable();
    using (SqlConnection con = new SqlConnection(constring))
    {
        SqlCommand cmd = new SqlCommand(myQuery, con);
        con.Open();
        SqlDataReader dr = null;
        dr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
        if (dr.HasRows)
        {
            dt.Load(dr);
        }
        return dt;
    }
}

za pomocąSqlDataAdapter:

public DataTable populateUsingDataAdapter(string myQuery)
{
    SqlDataAdapter dap = new SqlDataAdapter(myQuery,cn);
    DataSet ds = new DataSet();
    dap.Fill(ds);
    return ds.Tables[0];
}

questionAnswers(5)

yourAnswerToTheQuestion