在我们的 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/