TimeGetSystemTime - danielep71/VBA-PERFORMANCE GitHub Wiki
[Home]] ](/danielep71/VBA-PERFORMANCE/wiki/[[Class-cPerformanceMonitor)
The timeGetSystemTime function is also based on winmm.dll, the Windows Multimedia API.
It returns the current time in milliseconds.
The only difference between this function and the timeGetTime function is that timeGetSystemTime uses the MMTIME structure to return the system time.
4.1. API Declarations
Private Type SMPTE
Hour As Byte
Min As Byte
Sec As Byte
Frame As Byte
Fps As Byte
Dummy As Byte
Pad(2) As Byte
End Type
Private Type MMTIME
wType As Long
Units As Long
smpteVal As SMPTE
songPtrPos As Long
End Type
#If VBA7 Then
Private Declare PtrSafe Function timeGetSystemTime Lib "winmm.dll" _
(lpTime As MMTIME, ByVal uSize As Long) As Long
#Else
Private Declare Function timeGetSystemTime Lib "winmm.dll" Alias _
"timeGetSystemTime" (lpTime As MMTIME, ByVal uSize As Long) As Long
#End If
4.2. Rollover
This function is not subject to rollover.
TimeGetSysteTime depends on the system time and UTC. It could be affected by daylight savings time, leap seconds, time zones, or system time changes made by the administrator.
4.3. Accuracy and Resolution
The results are:
- Method 4 - 00:00:01 - 014 ms - 000 µs - 000 ns
- Method 4 - 00:00:01 - 016 ms - 000 µs - 000 ns
- Method 4 - 00:00:01 - 003 ms - 000 µs - 000 ns
- Method 4 - 00:00:01 - 001 ms - 000 µs - 000 ns
- Method 4 - 00:00:01 - 003 ms - 000 µs - 000 ns
- Method 4 - 00:00:01 - 009 ms - 000 µs - 000 ns
- Method 4 - 00:00:01 - 006 ms - 000 µs - 000 ns
- Method 4 - 00:00:01 - 007 ms - 000 µs - 000 ns
- Method 4 - 00:00:01 - 011 ms - 000 µs - 000 ns
- Method 4 - 00:00:01 - 010 ms - 000 µs - 000 ns
- Method 4 - 00:00:01 - 002 ms - 000 µs - 000 ns
- Method 4 - 00:00:01 - 005 ms - 000 µs - 000 ns
- Method 4 - 00:00:01 - 008 ms - 000 µs - 000 ns
- Method 4 - 00:00:01 - 003 ms - 000 µs - 000 ns
- Method 4 - 00:00:01 - 011 ms - 000 µs - 000 ns
- Method 4 - 00:00:01 - 009 ms - 000 µs - 000 ns
- Method 4 - 00:00:01 - 005 ms - 000 µs - 000 ns
- Method 4 - 00:00:01 - 007 ms - 000 µs - 000 ns
- Method 4 - 00:00:01 - 008 ms - 000 µs - 000 ns
- Method 4 - 00:00:01 - 007 ms - 000 µs - 000 ns
Accuracy is up to 15/16 milliseconds.
Using the NextTick Function, the results are much better:
- Method 4 - 00:00:01 - 000 ms - 000 µs - 000 ns
- Method 4 - 00:00:01 - 001 ms - 000 µs - 000 ns
- Method 4 - 00:00:01 - 001 ms - 000 µs - 000 ns
- Method 4 - 00:00:01 - 000 ms - 000 µs - 000 ns
- Method 4 - 00:00:01 - 001 ms - 000 µs - 000 ns
- Method 4 - 00:00:01 - 000 ms - 000 µs - 000 ns
- Method 4 - 00:00:01 - 001 ms - 000 µs - 000 ns
- Method 4 - 00:00:01 - 001 ms - 000 µs - 000 ns
- Method 4 - 00:00:01 - 000 ms - 000 µs - 000 ns
- Method 4 - 00:00:01 - 001 ms - 000 µs - 000 ns
- Method 4 - 00:00:01 - 000 ms - 000 µs - 000 ns
- Method 4 - 00:00:01 - 001 ms - 000 µs - 000 ns
- Method 4 - 00:00:01 - 000 ms - 000 µs - 000 ns
- Method 4 - 00:00:01 - 001 ms - 000 µs - 000 ns
- Method 4 - 00:00:01 - 001 ms - 000 µs - 000 ns
- Method 4 - 00:00:01 - 001 ms - 000 µs - 000 ns
- Method 4 - 00:00:01 - 001 ms - 000 µs - 000 ns
- Method 4 - 00:00:01 - 000 ms - 000 µs - 000 ns
- Method 4 - 00:00:01 - 000 ms - 000 µs - 000 ns
- Method 4 - 00:00:01 - 000 ms - 000 µs - 000 ns
Accuracy is now up to 1 millisecond.
The resolution is in milliseconds.
These are the same result as for TimeGetTime. No big surprise since we are using the same winmm.dll. The timeGetTime function has less overhead than timeGetSystemTime.
[Home]] ](/danielep71/VBA-PERFORMANCE/wiki/[[Class-cPerformanceMonitor)