我正在创建一个测试SQL查询性能的工具。该工具需要测量客户端结果返回时间,如果他们运行查询并将结果返回到控制台时将会遇到。但是,因为此工具将多次运行查询并最终跨多个线程,所以我不想在屏幕上显示查询结果。
如果我将结果显示在屏幕上,但是如果重定向到变量,则时间不正确(快速),我可以正确地获得时间。
有什么想法吗?
以下是我所拥有的测试代码部分。我测量开始和结束时间的差异,以找到毫秒数。谢谢。
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);
答案 0 :(得分:0)
输出重定向可能是一个问题,因为有人必须记住这样做。作为替代方案,在控制台应用程序中打开文件,并在运行结束时添加值。
// Create a new file
using (StreamWriter sw = File.CreateText(fileName))
{
sw.WriteLine("New file created: {0}", DateTime.Now.ToString());
}