vb.net - 跟踪 vb.net 中函数调用的持续时间

标签 vb.net visual-studio-2010 debugging visual-studio-debugging performance-testing

在我们的 VB6 应用程序中,我们添加了一些实用函数来跟踪函数所花费的时间。我们这样做是为了跟踪性能瓶颈。

基本上,它的工作原理是有两个实用函数:StartTickCount() 和 EndTickCount()。您将在每个函数中传递函数名称,函数将使用字典在调用 StartTickCount() 时获取滴答计数,然后在调用 EndTickCount() 时减去滴答计数。这并不完美,因为它当然没有考虑到调用获取滴答计数需要时间等,但基本上它符合我们的目的。屁股部分的痛苦在于确保在每个函数的开头调用 StartTickCount() 并在每个退出点调用 EndTickCount():

Private Function SomeFuction() as String
    ' indicate the function started
    StartTickCount("MyClass.SomeFunction")


    ' some logic that causes the function to end
    If (some logic) Then
        EndTickCount("MyClass.SomeFunction")
        Return "Hello!"
    End If

    ' final exit point
    EndTickCount("MyClass.SomeFunction")
    Return "World"
End Function

无论如何,是否有任何内置功能(通过 VS 2010 调试器或在 System.Reflection 命名空间中)可以在 VB.NET 中执行类似的操作?

基本上,我想要的是记录每个函数被调用的次数、在该函数中花费的总时间、在该函数中花费的平均秒数以及在单个函数中花费的最大时间调用该函数。

我当然可以用手写这个(因为我们已经在 VB6 中做过一次),但如果有现有的工具可以使它更容易,我宁愿使用它们。

最佳答案

您可以通过根据需要修改/调整以下代码来获得相同的结果:

  'Create a variable for start time:
  Dim TimerStart As DateTime
  TimerStart = Now
 '
 'place your computing here
 '
  Dim TimeSpent As System.TimeSpan
  TimeSpent = Now.Subtract(TimerStart)
  MsgBox(TimeSpent.TotalSeconds & " seconds spent on this task")

您可以查看有关 TimeSpan 的文档,以直接获取以毫秒为单位或其他格式的时间。

关于vb.net - 跟踪 vb.net 中函数调用的持续时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9295551/

相关文章:

.net - 使用 "Enter"键作为分隔符拆分字符

c# - WriteOnly属性还是方法?

c++ - Visual Studio 2010 库链接顺序

c - 指定要读取GDB内存区域的文件?

c++ - 在多线程 C++ 应用程序中调试段错误的一些常见方法是什么?

.net - 在 .NET 中转换 VB6 PropertyBag

VB.NET 2010 - FTPs TLS 显式模式

c++ - 将#warning 放入#define 的正文中

c# - Resharper 自定义图案 : Ignore property attributes

java - 我可以在 IntelliJ 中使用打印点吗