让我们想象一下,使用Stopwatch进行简单的测量 public void DoWork() { var timer = Stopwatch.StartNew(); // some hard work Logger.Log("Time elapsed: {0}", timer.Elapsed); timer.Stop(); // Do I need to call this? } 根据MSDN: 在典型的秒表scheme中,您调用Start方法, 然后最终调用Stop方法 ,然后使用Elapsed属性检查已用时间。 我不确定当我不再对timer实例感兴趣时是否应该调用这个方法。 我应该使用Stop方法“清除”吗? 编辑 请记住,Logger.Log(..) timer.Elapsed任何费用,因为timer.Elapsed是在logging器日志之前读取的。
我已经看过以前的问题,但没有人有我正在寻找的答案。 如何将StopWatch方法中的毫秒转换为分钟和秒钟? 我有: watch.start(); 开始秒表和 watch.stop(); 停止手表。 我后来有 watch.getTime(); 它返回毫秒。 我希望它在秒和分钟返回。 我怎么去做呢? 我正在寻找一种方法来做到这一点,而不用乘以/除以1000,而是使整个计算更具可读性和更less错误倾向的方法。
我还需要显示分钟,实际上我使用这个代码来显示秒数,但也需要分钟 TimeSpan ts = stopwatch.Elapsed; Console.WriteLine("File Generated: " + _writer.getBinaryFileName(filePath, Convert.ToInt32(logSelected)) + " in " + "{0}.{1:D2}" + "seconds", ts.Seconds, ts.Milliseconds/10 + "\n" ); 我能怎么做?
我需要一个准确的计时器,DateTime.Now似乎不够准确。 从我读的说明,System.Diagnostics.Stopwatch似乎正是我想要的。 但是我有恐惧症 我很担心在实际生产代码中使用System.Diagnostics中的任何内容。 (我广泛使用Asserts和PrintLns等debugging,但从来没有生产的东西。)我不只是试图用一个计时器来衡量我的function – 我的应用程序需要一个实际的计时器。 我读过另一个论坛,System.Diagnostics.StopWatch只是基准,不应该用于零售代码,虽然没有任何理由。 这是正确的,还是我(和谁发布的build议)是太closures了System.Diagnostics的头脑? 即在生产代码中使用System.Diagnostics.Stopwatch是否可行? 谢谢阿德里安
有没有Java的秒表? 因为在谷歌我只能find秒表的代码,他们不工作,他们给我总是0毫秒。 我发现这个代码不起作用,但我不明白为什么,因为代码对我来说看起来很好。 public class StopWatch { private long startTime = 0; private long stopTime = 0; private boolean running = false; public void start() { this.startTime = System.currentTimeMillis(); this.running = true; } public void stop() { this.stopTime = System.currentTimeMillis(); this.running = false; } //elaspsed time in milliseconds public long getElapsedTime() { long elapsed; if […]
System.Diagnostics.Stopwatch有多准确? 我正在尝试为不同的代码path做一些指标,我需要它是确切的。 我应该使用秒表还是有另一种更准确的解决scheme。 有人告诉我,有时秒表会给出不正确的信息。
我遇到了一个间歇性失败的unit testing,因为时间已经不是我所期望的了。 这个testing是什么样子就是一个例子: Stopwatch stopwatch = new Stopwatch(); stopwatch.Start(); TimeSpan oneSecond = new TimeSpan(0, 0, 1); for(int i=0; i<3; i++) { Thread.Sleep(oneSecond); } stopwatch.Stop(); Assert.GreaterOrEqual(stopwatch.ElapsedMilliseconds, 2999); 大多数情况下,这个过程至less失败了一次失败,因为: 预计:大于或等于2999但是:2998 我不明白怎么可能less于3秒。 Thread.Sleep是否存在准确性问题,或者是我不知道的秒表? 就像下面一些问题的更新一样。 被unit testing的场景是一个类允许一个人调用一个方法来执行一些操作,如果它失败了,等一下再调用这个方法。 上面显示的testing只是近似发生的事情。 说我想调用一个方法DoSomething()…但是,如果DoSomething()引发exception,我希望能够重试调用它最多3次,但每次尝试之间等待1秒。 在这种情况下,unit testing的目的是validation当我们要求3次重试,每次重试之间等待1秒钟,总时间大于3秒。
可能重复: 我如何衡量一个函数运行多久? 我有一个I / O占用时间的方法,将数据从一个位置复制到另一个位置。 计算执行时间的最好和最真实的方法是什么? Thread ? Timer ? Stopwatch ? 任何其他解决scheme 我想要最精确的一个,尽可能简短。