1,486
社区成员
发帖
与我相关
我的任务
分享
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