Как часть моего модуля архитектуры приложений в Uni, я тестирую время, необходимое для извлечения данных с сервера MS SQL локально и удаленно. У меня есть пользовательский интерфейс с использованием Visual Studio 2017 ASP.NET с C #. Я создаю экземпляр и запускаю элемент управления секундомером, когда пользователь нажимает кнопку, и останавливаю секундомер, когда строка кода связывает результат с видом на сетку. У меня есть две кнопки, одна запускает код для локальной базы данных, созданной в Visual Studio, а другая кнопка запускает идентичный код (кроме строки подключения) для удаленного SQL Server (GoDaddy). Результаты, которые я получаю, очень быстрые 30 мс и 100 мс удаленно.
Мой вопрос на самом деле: когда я получаю точные сведения о том, что, по моему мнению, происходит, или это просто дает мне время для создания страницы после обратной передачи.
Есть ли способ, которым я могу имитировать одновременные подключения к каждой базе данных, чтобы проверить производительность в реальных условиях использования.
protected void Btnlocal_Click(object sender, EventArgs e)
{
if (txthouseno.Text != "" && txtpostcode.Text != "")
{
Label4.Visible = true;
Stopwatch localStopWatch = new Stopwatch();
localStopWatch.Start();
string connectionString;
SqlConnection cnn;
connectionString = @"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=C:\xxxxxxxxx\xxxxxxx.mdf;Integrated Security=True;Connect Timeout=30";
cnn = new SqlConnection(connectionString);
cnn.Open();
lbllocal.Text = "Local Database Connected";
SqlCommand command;
SqlDataReader dataReader;
String sql = "select * from Customer where postcode = @custpcode AND houseno = @custhouseno";
command = new SqlCommand(sql, cnn);
var custpostParam = new SqlParameter("custpcode", SqlDbType.VarChar);
custpostParam.Value = txtpostcode.Text;
var custhouseParam = new SqlParameter("custhouseno", SqlDbType.VarChar);
custhouseParam.Value = txthouseno.Text;
command.Parameters.Add(custpostParam);
command.Parameters.Add(custhouseParam);
dataReader = command.ExecuteReader();
GridView1.DataSource = dataReader;
GridView1.DataBind();
localStopWatch.Stop();
command.Dispose();
cnn.Close();
connectionString = "";
lbllocal.Text = "Local PC Time Taken = " + localStopWatch.ElapsedMilliseconds.ToString() + " ms";
}
}
protected void Btnremote_Click(object sender, EventArgs e)
{
if (txthouseno.Text != "" && txtpostcode.Text != "")
{
Label5.Visible = true;
Stopwatch remoteStopWatch = new Stopwatch();
remoteStopWatch.Start();
ViewState["pageLoadTime"] = DateTime.Now;
string connectionString;
SqlConnection cnn;
connectionString = @"Data Source=xxx.xxx.xx.xxx;Integrated Security=False;User ID=xxxxxx; Password = xxxxxx; Connect Timeout=15;Encrypt=False;Packet Size=4096";
cnn = new SqlConnection(connectionString);
cnn.Open();
SqlCommand command;
SqlDataReader dataReader;
String sql = "select * from dbo.Customer where postcode = @custpcode AND houseno = @custhouseno";
command = new SqlCommand(sql, cnn);
var custpostParam = new SqlParameter("custpcode", SqlDbType.VarChar);
custpostParam.Value = txtpostcode.Text;
var custhouseParam = new SqlParameter("custhouseno", SqlDbType.VarChar);
custhouseParam.Value = txthouseno.Text;
command.Parameters.Add(custpostParam);
command.Parameters.Add(custhouseParam);
dataReader = command.ExecuteReader();
GridView2.DataSource = dataReader;
GridView2.DataBind();
remoteStopWatch.Stop();
command.Dispose();
cnn.Close();
connectionString = "";
lblremote.Text = "Remote Server Time Taken = " + remoteStopWatch.ElapsedMilliseconds.ToString() + " ms";
}
} enter code here