add a tsc frequency get for windows

This commit is contained in:
Colin Davidson
2023-02-19 20:33:48 -08:00
parent 6a2ef1f4f3
commit fb735883be

View File

@@ -0,0 +1,28 @@
//+private
//+build windows
package time
import win32 "core:sys/windows"
_get_tsc_frequency :: proc "contextless" () -> u64 {
@(static) frequency : u64 = 0
if frequency > 0 {
return frequency
}
qpc_begin: win32.LARGE_INTEGER
win32.QueryPerformanceCounter(&qpc_begin)
tsc_begin := intrinsics.read_cycle_counter()
win32.Sleep(2)
qpc_end: win32.LARGE_INTEGER
win32.QueryPerformanceCounter(&qpc_end)
tsc_end := intrinsics.read_cycle_counter()
qpc_frequency: win32.LARGE_INTEGER
win32.QueryPerformanceFrequency(&qpc_frequency)
frequency = ((tsc_end - tsc_begin) * qpc_frequency) / (qpc_end - qpc_begin)
return frequency
}