【问题标题】:Time interval testing using stopwatch使用秒表进行时间间隔测试
【发布时间】:2014-03-27 17:58:46
【问题描述】:

我试图找出算法查找某些字段所需的时间以及每个记录值之间的时间间隔。例如:

算法开始:0.0

找到第一个字段:2.56ms 总时间:2.56ms

找到第二个字段:2ms 总时间:4.56ms

.....等等

我正在尝试使用 Stopwatch 类并记录经过的时间,但时间在找到 x1 和 x2 之间没有变化,它只是为所有这些输出 x1 时间。我该怎么做?

谢谢

【问题讨论】:

  • 显示一些代码,否则我们不可能知道它为什么不起作用。
  • 您需要使用 2 个秒表。一个秒表记录总时间,另一个你必须在每个字段后重置。
  • 如果时间没有变化,它很可能发生得比秒表计算的快。是什么让您认为输出不正确?无论哪种方式,您都应该发布一些代码,以便我们可以看到您在做什么 - 有六种方法可以编写此代码,您收到的任何建议/更正都将假设您使用了哪个。
  • 是的,我使用了 2 个秒表,感谢您的帮助! @Sebi

标签: c# performance-testing stopwatch


【解决方案1】:

这是我在每种方法中使用的一些代码:

TimeSpan ts = sWElapsed.Elapsed;
sWElapsed.Reset();
sWElapsed.Start();
string elapsedTime = String.Format("{0:00}:{1:00}:{2:00}.{3:00}",
                                        ts.Hours, ts.Minutes, ts.Seconds,
                                        ts.Milliseconds / 10);
Console.WriteLine("LP count: " + countLp + "  Time Elapsed: " + elapsedTime);

全部记录的代码:

sWTotal.Stop();
sWElapsed.Stop();

TimeSpan ts = sWTotal.Elapsed;
string elapsedTime = String.Format("{0:00}:{1:00}:{2:00}.{3:00}",
                ts.Hours, ts.Minutes, ts.Seconds,
                ts.Milliseconds / 10);

Console.WriteLine("Deal complete. Total # of Lp's: " + countLp + " Time to complete collection: " + elapsedTime);

【讨论】:

    【解决方案2】:

    在获得经过的时间后使用stopwatch.Reset()。 像这样:

    Stopwatch sw = new Stopwatch();
    Stopwatch swTotal = new Stopwatch();
    
    swTotal.Start(); 
    sw.Start();
    //first action
    sw.Stop();
    Console.WriteLine("Elapsed 1 = " + sw.Elapsed.ToString());
    sw.Reset();
    //second action
    Console.WriteLine("Elapsed 2 = " + sw.Elapsed.ToString());
    swTotal.Stop();
    Console.WriteLine("Total = " + swTotal.Elapsed.ToString());
    

    【讨论】:

    • 是的,这就是我需要的!我需要重置它然后重新启动它我认为经过的时间是记录秒表在行执行时运行的时间。谢谢!
    • 我是否遗漏了什么,或者不应该在第二个操作之前调用sw.Start()
    猜你喜欢
    • 1970-01-01
    • 2012-05-22
    • 2018-05-18
    • 1970-01-01
    • 2013-10-06
    • 2016-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多