1,488
社区成员




Public Declare Function timeBeginPeriod Lib "winmm.dll" (ByVal uPeriod As Long) As Long
Public Declare Function timeEndPeriod Lib "winmm.dll" (ByVal uPeriod As Long) As Long
Private Sub Form_Initialize()
Call timeBeginPeriod(1)
End Sub
Private Sub Form_Terminate()
Call timeEndPeriod(1)
End Sub
'声明:
Declare Function GetTickCount Lib "kernel32" Alias "GetTickCount" () As Long
'说明
用于获取自windows启动以来经历的时间长度(毫秒)
'返回值
Long,以毫秒为单位的windows运行时间
Private Sub DoTestGetTickCount()
Dim lTime1&, lTime2&
Dim i&
lTime1 = GetTickCount
For i = 1 To 400000
Next i
lTime2 = GetTickCount
Debug.Print lTime2 - lTime1
End Sub
Private Declare Function timeGetTime Lib "winmm.dll" () As Long
Private Sub DoTestTimeGetTime()
Dim lTime1&, lTime2&
Dim i&
lTime1 = timeGetTime
For i = 1 To 100000
Next i
lTime2 = timeGetTime
Debug.Print lTime2 - lTime1
End Sub
Private Sub DoTestSleep()
Dim lTime1&, lTime2&
Dim i&
lTime1 = timeGetTime
Sleep 1 'delay 1 ms
lTime2 = timeGetTime
Debug.Print lTime2 - lTime1
End Sub
Private Sub DoTestSleep()
Dim lTime1&, lTime2&
Dim i&
lTime1 = timeGetTime
Sleep 1 'delay 1 ms
lTime2 = timeGetTime
Debug.Print lTime2 - lTime1
End Sub
[/quote]
看了好几个帖子,也不知道你们到底在争论什么
这个什么也证明不了,sleep不是用来计时的,用sleep测试时钟精确性非常不恰当
这种测试结果,大概只能表示为系统的繁忙程度
用sleep会导致线程切换,估计那样代码每次的测试结果都不相同,而不相同的原因也有很多种,其中之一是timegettime的精度,另外就是系统内的线程环境,还有就是系统对线程调度的算法问题
总之。。。 这个题目,lz的到底怎么想的用 sleep 测试精度。。。。
Private Sub DoTestSleep()
Dim lTime1&, lTime2&
Dim i&
lTime1 = timeGetTime
Sleep 1 'delay 1 ms
lTime2 = timeGetTime
Debug.Print lTime2 - lTime1
End Sub