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:

  1. Method 4 - 00:00:01 - 014 ms - 000 µs - 000 ns
  2. Method 4 - 00:00:01 - 016 ms - 000 µs - 000 ns
  3. Method 4 - 00:00:01 - 003 ms - 000 µs - 000 ns
  4. Method 4 - 00:00:01 - 001 ms - 000 µs - 000 ns
  5. Method 4 - 00:00:01 - 003 ms - 000 µs - 000 ns
  6. Method 4 - 00:00:01 - 009 ms - 000 µs - 000 ns
  7. Method 4 - 00:00:01 - 006 ms - 000 µs - 000 ns
  8. Method 4 - 00:00:01 - 007 ms - 000 µs - 000 ns
  9. Method 4 - 00:00:01 - 011 ms - 000 µs - 000 ns
  10. Method 4 - 00:00:01 - 010 ms - 000 µs - 000 ns
  11. Method 4 - 00:00:01 - 002 ms - 000 µs - 000 ns
  12. Method 4 - 00:00:01 - 005 ms - 000 µs - 000 ns
  13. Method 4 - 00:00:01 - 008 ms - 000 µs - 000 ns
  14. Method 4 - 00:00:01 - 003 ms - 000 µs - 000 ns
  15. Method 4 - 00:00:01 - 011 ms - 000 µs - 000 ns
  16. Method 4 - 00:00:01 - 009 ms - 000 µs - 000 ns
  17. Method 4 - 00:00:01 - 005 ms - 000 µs - 000 ns
  18. Method 4 - 00:00:01 - 007 ms - 000 µs - 000 ns
  19. Method 4 - 00:00:01 - 008 ms - 000 µs - 000 ns
  20. 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:

  1. Method 4 - 00:00:01 - 000 ms - 000 µs - 000 ns
  2. Method 4 - 00:00:01 - 001 ms - 000 µs - 000 ns
  3. Method 4 - 00:00:01 - 001 ms - 000 µs - 000 ns
  4. Method 4 - 00:00:01 - 000 ms - 000 µs - 000 ns
  5. Method 4 - 00:00:01 - 001 ms - 000 µs - 000 ns
  6. Method 4 - 00:00:01 - 000 ms - 000 µs - 000 ns
  7. Method 4 - 00:00:01 - 001 ms - 000 µs - 000 ns
  8. Method 4 - 00:00:01 - 001 ms - 000 µs - 000 ns
  9. Method 4 - 00:00:01 - 000 ms - 000 µs - 000 ns
  10. Method 4 - 00:00:01 - 001 ms - 000 µs - 000 ns
  11. Method 4 - 00:00:01 - 000 ms - 000 µs - 000 ns
  12. Method 4 - 00:00:01 - 001 ms - 000 µs - 000 ns
  13. Method 4 - 00:00:01 - 000 ms - 000 µs - 000 ns
  14. Method 4 - 00:00:01 - 001 ms - 000 µs - 000 ns
  15. Method 4 - 00:00:01 - 001 ms - 000 µs - 000 ns
  16. Method 4 - 00:00:01 - 001 ms - 000 µs - 000 ns
  17. Method 4 - 00:00:01 - 001 ms - 000 µs - 000 ns
  18. Method 4 - 00:00:01 - 000 ms - 000 µs - 000 ns
  19. Method 4 - 00:00:01 - 000 ms - 000 µs - 000 ns
  20. 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)