在我们的 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 的文档,以直接获取以毫秒为单位或其他格式的时间。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)