我正在尝试对某些代码进行性能测试。我正在使用秒表。当我输出毫秒数时它总是告诉我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))
答案 0 :(得分:10)
Stopwatch
刻度与DateTime
刻度线不同。
Stopwatch
刻度的长度取决于秒表频率(一个刻度是一秒除以频率,如the MSDN documentation for Stopwatch.ElapsedTicks中所述。
可能有人认为Stopwatch.ElapsedTicks
是该属性名称的不良选择,因为可能会混淆DateTime标记。我会喜欢ElapsedRawTicks或其他一些合适的形容词限定词来暗示这些不是标准的Ticks。
答案 1 :(得分:0)
确保您实际上是Stopwatch
并且您正在使用Stopwatch.ElapsedMilliseconds
或Stopwatch.Elapsed.TotalMilliseconds
。