【问题标题】:how to get time to the extent of exact millisecond in vb.net如何在vb.net中获得精确到毫秒的时间
【发布时间】:2011-03-11 08:25:37
【问题描述】:

我正在开发一个时间非常紧迫的应用程序。我想在代码中放置一个日志编写器,以便我可以跟踪事件并找出应用程序在哪里浪费时间。但问题是 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

【问题讨论】:

  • 我怀疑MSDN实际上说你可以毫秒获取时间,而不是你可以以单毫秒的间隔获取它. Windows 不是实时操作系统。这种时间分辨率根本不可能。您有阻止它的软件和硬件限制。更多信息请访问my answer to this related question

标签: vb.net


【解决方案1】:

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

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

对于您的 sn-p 中的代码,这仍然不太可能很好地解决,增加一个整数需要不到半纳秒。您实际上将测量记录需要多长时间,这应该足够慢以获得不同的输出值。

【讨论】:

  • 谢谢,非常感谢Hans Passant先生,它正在工作。非常感谢。
【解决方案2】:

如果您想找出应用程序的哪些部分正在浪费时间,那么您应该尝试使用分析器。两种可能的产品是 JetBrains dotTrace 和 RedGates ANTS。您还应该在这里查看this question

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-09-30
    • 2021-04-08
    • 2010-10-27
    • 1970-01-01
    • 2016-06-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多