除非你的功能很慢,否則你需要一個(gè)非常高分辨率的計(jì)時(shí)器。我所知道的最準(zhǔn)確的是QueryPerformanceCounter
。谷歌更多信息。嘗試推下到一個(gè)類,把它CTimer
說,那么你可以讓一個(gè)實(shí)例全球某處,只是打電話.StartCounter
和.TimeElapsed
Option ExplicitPrivate Type LARGE_INTEGER
lowpart As Long
highpart As LongEnd TypePrivate Declare Function QueryPerformanceCounter Lib "kernel32" (lpPerformanceCount As LARGE_INTEGER) As LongPrivate Declare Function QueryPerformanceFrequency Lib "kernel32" (lpFrequency As LARGE_INTEGER) As LongPrivate m_CounterStart As LARGE_INTEGERPrivate m_CounterEnd As LARGE_INTEGERPrivate m_crFrequency As DoublePrivate Const TWO_32 = 4294967296# ' = 256# * 256# * 256# * 256#Private Function LI2Double(LI As LARGE_INTEGER) As DoubleDim Low As Double
Low = LI.lowpart If Low < 0 Then
Low = Low + TWO_32 End If
LI2Double = LI.highpart * TWO_32 + LowEnd FunctionPrivate Sub Class_Initialize()Dim PerfFrequency As LARGE_INTEGER
QueryPerformanceFrequency PerfFrequency
m_crFrequency = LI2Double(PerfFrequency)End SubPublic Sub StartCounter()
QueryPerformanceCounter m_CounterStartEnd SubProperty Get TimeElapsed() As DoubleDim crStart As DoubleDim crStop As Double
QueryPerformanceCounter m_CounterEnd
crStart = LI2Double(m_CounterStart)
crStop = LI2Double(m_CounterEnd)
TimeElapsed = 1000# * (crStop - crStart) / m_crFrequencyEnd Property