C# SQL Server客户端在c中的执行时间#

C# SQL Server客户端在c中的执行时间#,c#,sql-server,C#,Sql Server,我正在创建一个用于测试SQL查询性能的工具。该工具需要测量客户机结果返回时间,就像他们运行查询并将结果返回到控制台时所经历的那样。但是,由于此工具将多次运行查询,并最终跨多个线程运行,因此我不希望在屏幕上显示查询结果 如果我将结果显示在屏幕上,我可以正确获得时间,但如果重定向到变量,则时间不正确(到fast) 有什么想法吗 下面是我的测试代码部分。我测量开始和结束时间的差异,以找到毫秒数。多谢各位 DateTime beginTime = DateTime.Now; cn2.Op

我正在创建一个用于测试SQL查询性能的工具。该工具需要测量客户机结果返回时间,就像他们运行查询并将结果返回到控制台时所经历的那样。但是,由于此工具将多次运行查询,并最终跨多个线程运行,因此我不希望在屏幕上显示查询结果

如果我将结果显示在屏幕上,我可以正确获得时间,但如果重定向到变量,则时间不正确(到fast)

有什么想法吗

下面是我的测试代码部分。我测量开始和结束时间的差异,以找到毫秒数。多谢各位

    DateTime beginTime = DateTime.Now;
    cn2.Open();

    try
    {
        SqlCommand comm = new SqlCommand(cmd, cn2);
        SqlDataReader reader = comm.ExecuteReader();

        IDictionary d = cn2.RetrieveStatistics();
        string[] keys = new string[d.Count];
        d.Keys.CopyTo(keys, 0);

        for (int x = 0; x < d.Count; x++)
        {
            Console.WriteLine("{0}\t{1}", keys[x], (long)d[keys[x]]);
        }

        Int32.TryParse(d["ExecutionTime"].ToString(), out actualTimeMilliseconds);

        do
        {
            int count = reader.FieldCount;
            while (reader.Read())
            {
                for (int i = 0; i < count; i++)
                {
                    Console.WriteLine(reader.GetValue(i));
                }
            }
        } while (reader.NextResult());

    }
    catch (Exception)
    {

        throw;
    }

    cn2.Close();
    DateTime endTime = DateTime.Now;
    TimeSpan clientTime = endTime.Subtract(beginTime);
DateTime beginTime=DateTime.Now;
cn2.Open();
尝试
{
SqlCommand comm=新的SqlCommand(cmd,cn2);
SqlDataReader=comm.ExecuteReader();
IDictionary d=cn2.RetrieveStatistics();
字符串[]键=新字符串[d.Count];
d、 Keys.CopyTo(Keys,0);
对于(int x=0;x
输出重定向可能是个问题,因为必须有人记住这样做。或者,在控制台应用程序中打开该文件,并在运行结束时添加值

  // Create a new file 
  using (StreamWriter sw = File.CreateText(fileName))
  {
      sw.WriteLine("New file created: {0}", DateTime.Now.ToString());
  }

根本不清楚这里有什么问题。为什么不能将结果写入文件?为什么“太快”是个问题?@rbaryyoung我想模拟用户体验。我已经可以捕获打电话所需的时间,但我还想捕获显示时间,而不将结果显示在屏幕或文件上。所谓“捕获”是指“模拟”吗?因为通常情况下,性能中的“捕获”意味着“测量和记录”,理想情况下应该尽可能快,以免干扰测量。@rbaryyoung您是正确的。我知道这是可以衡量的,因为我正在复制的另一个应用程序没有我需要的功能。@rbaryyoung我已经正确地澄清了这个问题。