如何在vb.net中获得精确毫秒级的时间

如何在vb.net中获得精确毫秒级的时间,vb.net,Vb.net,我正在开发一个时间非常关键的应用程序。我想在代码中添加一个日志编写器,以便跟踪事件并找出应用程序在哪里浪费时间。但问题是vb.net仅以15.25毫秒的间隔告诉时间该做什么。尽管msdn文档说我们可以以毫秒为单位获得时间。 为了更好地理解我的问题,请阅读以下代码。这段代码写在一个按钮的点击事件上,它将时间写在一个日志文件中。 问题是它写的时间是16,16,16,一段时间后,当dx值达到5000时,它跳到31,然后跳到46,依此类推。谁能解释一下 dx = 1 While dx &

我正在开发一个时间非常关键的应用程序。我想在代码中添加一个日志编写器,以便跟踪事件并找出应用程序在哪里浪费时间。但问题是vb.net仅以15.25毫秒的间隔告诉时间该做什么。尽管msdn文档说我们可以以毫秒为单位获得时间。 为了更好地理解我的问题,请阅读以下代码。这段代码写在一个按钮的点击事件上,它将时间写在一个日志文件中。 问题是它写的时间是16,16,16,一段时间后,当dx值达到5000时,它跳到31,然后跳到46,依此类推。谁能解释一下

    dx = 1
    While dx <= 100000
        dx = dx + 1
        SRLog1.WriteLine("dx vALUE > " & CStr(dx) & " Ticks -> " + CStr(Now.Millisecond))
    End While
dx=1

而dx则可以使用Stopwatch类创建分辨率更高的增量时钟。例如:

    Dim sw = Stopwatch.StartNew()
    Dim start = sw.Elapsed
    '' Do stuff
    '' ...
    Dim sample = sw.Elapsed
    Console.WriteLine(sample - start)

对于代码段中的代码来说,这仍然不太可能奏效,增加一个整数所需的时间不到半纳秒。您将实际测量记录所需的时间,这应该足够慢以获得不同的输出值。

您可以使用Stopwatch类创建分辨率更高的增量时钟。例如:

    Dim sw = Stopwatch.StartNew()
    Dim start = sw.Elapsed
    '' Do stuff
    '' ...
    Dim sample = sw.Elapsed
    Console.WriteLine(sample - start)

对于代码段中的代码来说,这仍然不太可能奏效,增加一个整数所需的时间不到半纳秒。您将实际测量日志记录所需的时间,这应该足够慢以获得不同的输出值。

如果您想知道应用程序的哪些部分正在缩短时间,那么您应该尝试使用探查器。两种可能的产品是JetBrains dotTrace和RedGates ANTS。您还应该看看这里。

如果您想知道应用程序的哪些部分正在缩减时间,那么您应该尝试使用探查器。两种可能的产品是JetBrains dotTrace和RedGates ANTS。您还应该看看这里。

我怀疑MSDN实际上是说您可以以毫秒为单位获取时间,而不是说您可以以毫秒为单位获取时间。Windows不是实时操作系统。这种时间分辨率根本不可能。你有软件和硬件的限制,阻止它。更多信息可以在中找到。我怀疑MSDN实际上说可以以毫秒为单位获取时间,而不是以毫秒为单位获取时间。Windows不是实时操作系统。这种时间分辨率根本不可能。你有软件和硬件的限制,阻止它。更多信息请访问。谢谢,非常感谢Hans Passant先生,它正在工作。非常感谢,非常感谢汉斯·帕桑先生,它正在工作。谢谢。