实现毫秒级和纳秒级计数的几个API--timeGetTime、GetTickCount、QueryPerformanceCounter

Private Declare Function timeGetTime Lib "winmm.dll" () As Long
Private Declare Function GetTickCount Lib "kernel32" () As Long

Private Declare Function QueryPerformanceCounter Lib "kernel32 " (lpPerformanceCount As Any) As Long
Private Declare Function QueryPerformanceFrequency Lib "kernel32 " (lpFrequency As Any) As Long
Private Declare Sub Sleep Lib "KERNEL32.dll" (ByVal dwMilliseconds As Long)

Sub timeCount()
    Dim curFrequency As Currency
    Dim curStart As Currency
    Dim curEnd As Currency
    Dim delayms%
    
    delayms = 66
    
    QueryPerformanceFrequency curFrequency
    QueryPerformanceCounter curStart            '精度100ns
    Sleep delayms
    QueryPerformanceCounter curEnd
    MsgBox "QueryPerformanceCounter用时: " & (curEnd - curStart) / curFrequency * 1000 & "ms "
    
    curStart = Timer               '精度55ms
    Sleep delayms
    MsgBox "Timer计时: " & (Timer - curStart) * 1000 & "毫秒"
    
    curStart = GetTickCount        '精度55ms
    Sleep delayms
    MsgBox "GetTickCount计时: " & (GetTickCount - curStart) & "毫秒"
    
    curStart = timeGetTime         '精度10ms
    Sleep delayms
    MsgBox "timeGetTime计时: " & (timeGetTime - curStart) & "毫秒"
End Sub

猜你喜欢

转载自blog.csdn.net/xcntime/article/details/72870260