8

C# 中是否有任何地方可以以亚毫秒精度执行计时操作?我将计时代码放入我的软件中,所有内容都返回为 0ms。我想知道是否有办法获得更精细的粒度。

附录:这是获得亚毫秒计时的正确代码吗?

timeSpan.TotalMilliseconds / 10

我仍然得到 0 作为经过的时间

4

5 回答 5

16

您总是可以尝试使用QueryPerformanceCounterStopWatch类作为托管方法

于 2010-02-08T21:54:21.983 回答
11

利用System.Diagnostics.Stopwatch

于 2010-02-08T21:54:57.463 回答
3

通常我通过多次重复操作来测量这些场景(根据需要多少毫秒来获得几十或几百毫秒。

然后您可以更轻松地进行调整和测量。

于 2010-02-08T21:55:13.000 回答
1

你可以尝试用 Ticks 而不是毫秒来衡量你的表现。它将在性能方面更加准确。

但我同意 Sam 和 Tyranid,使用 System.Diagnostics.StopWatch。

于 2010-02-08T22:04:08.937 回答
1

我学到了一些新东西。这些蜱虫确实很方便。完整示例:

Stopwatch stopwatch = Stopwatch.StartNew();

// Run code to get duration of

long durationInTicks = stopwatch.ElapsedTicks;
Console.WriteLine($"Duration: {(decimal)durationInTicks / TimeSpan.TicksPerMillisecond:f3}ms");

你也可以stopwatch.ElapsedTicks在内部使用Console.WriteLine,但我不知道这是否有任何性能延迟,这就是我首先检索它并将其放入变量中的原因。

于 2017-09-04T07:55:02.107 回答