sco*_*rin 5 vb.net debugging visual-studio-2010 performance-testing visual-studio-debugging
在我们的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
Run Code Online (Sandbox Code Playgroud)
无论如何,是否通过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")
Run Code Online (Sandbox Code Playgroud)
您可以查看有关TimeSpan的文档,以便以毫秒或其他格式直接获取时间.
我想看看秒表类 - 它是为此类事情设计的。
然而,已经有一个很棒的工具可以做到这一点,而且它实际上只需很少的工作就可以做得更好。它还有 10 天的免费试用期。
http://www.jetbrains.com/profiler/
(我不为jetbrains工作,也不隶属于jetbrains - 但我希望我是因为他们制造了一些非常酷的产品)