未来已来

LoadRunner Analysis 中response time为负

上一篇 / 下一篇  2010-09-18 12:51:30 / 个人分类:性能测试

       精确的时间计时,有时候是非常必要的。在测试代码的性能时,也需要使用到非常精确的时间计时。还有测试硬件的性能时,也需要精确的时间计时。这时就需要使用QueryPerformanceCounter来查询定时器的计数值,如果硬件里有定时器,它就会启动这个定时器,并且不断获取定时器的值,这样的定时器精度,就跟硬件时钟的晶振一样精确

 

Option Explicit

      Declare Function QueryPerformanceCounter Lib "Kernel32" _
                                 (X As Currency) As Boolean
      Declare Function QueryPerformanceFrequency Lib "Kernel32" _
                                 (X As Currency) As Boolean
      Declare Function GetTickCount Lib "Kernel32" () As Long
      Declare Function timeGetTime Lib "winmm.dll" () As Long

      Sub Test_Timers()
      Dim Ctr1 As Currency, Ctr2 As Currency, Freq As Currency
      Dim Count1 As Long, Count2 As Long, Loops As Long
      '
      ' Time QueryPerformanceCounter
      '
        If QueryPerformanceCounter(Ctr1) Then
          QueryPerformanceCounter Ctr2
          Debug.Print "Start Value: "; Format$(Ctr1, "0.0000")
          Debug.Print "End Value: "; Format$(Ctr2, "0.0000")
          QueryPerformanceFrequency Freq
          Debug.Print "QueryPerformanceCounter minimum resolution: 1/" & _
                      Freq * 10000; " sec"
          Debug.Print "API Overhead: "; (Ctr2 - Ctr1) / Freq; "seconds"
        Else
          Debug.Print "High-resolution counter not supported."
        End If
      '
      ' Time GetTickCount
      '
        Debug.Print
        Loops = 0
        Count1 = GetTickCount()
        Do
          Count2 = GetTickCount()
          Loops = Loops + 1
        Loop Until Count1 <> Count2
        Debug.Print "GetTickCount minimum resolution: "; _
                    (Count2 - Count1); "ms"
        Debug.Print "Took"; Loops; "loops"
      '
      ' Time timeGetTime
      '
        Debug.Print
        Loops = 0
        Count1 = timeGetTime()
        Do
          Count2 = timeGetTime()
          Loops = Loops + 1
        Loop Until Count1 <> Count2
        Debug.Print "timeGetTime minimum resolution: "; _
                    (Count2 - Count1); "ms"
        Debug.Print "Took"; Loops; "loops"
      End Sub
  


TAG:

 

评分:0

我来说两句

Open Toolbar