为什么ElapsedTicks X 10 000不等于.Net的秒表的ElapsedMilliseconds?

时间:2010-06-09 15:49:38

标签: .net performance

我正在尝试对某些代码进行性能测试。我正在使用秒表。当我输出毫秒数时它总是告诉我0所以我认为我会尝试滴答数。我看到滴答的数量大约是20 000到30 000.在TimeSpan.TicksPerMillisecond上查看MSDN,它表示每毫秒有10 000个滴答。在那种情况下,为什么我的秒表上经过的毫秒没有显示为2或3?

我错过了什么?我甚至在同一条线上输出了结果。这就是我得到的。

Time taken: 26856 ticks, 0 ms

它是不变的。

编辑(添加了一些代码) 这是我在循环中运行的代码。我意识到我每次都在创造一个新的秒表,效率不高但我不知道它会如何扭曲我的结果。谢谢你们

Dim SW = New Stopwatch()
SW.Reset()
SW.Start()
MethodCall()
SW.Stop()
Console.WriteLine(String.Format("Time to increase counters: {0} ticks, {1} ms", SW.ElapsedTicks, SW.ElapsedMilliseconds))

2 个答案:

答案 0 :(得分:10)

Stopwatch刻度与DateTime刻度线不同。

Stopwatch刻度的长度取决于秒表频率(一个刻度是一秒除以频率,如the MSDN documentation for Stopwatch.ElapsedTicks中所述。

可能有人认为Stopwatch.ElapsedTicks是该属性名称的不良选择,因为可能会混淆DateTime标记。我会喜欢ElapsedRawTicks或其他一些合适的形容词限定词来暗示这些不是标准的Ticks。

答案 1 :(得分:0)

确保您实际上是Stopwatch并且您正在使用Stopwatch.ElapsedMillisecondsStopwatch.Elapsed.TotalMilliseconds