#if OS_WINDOWS constexpr s64 FILETIME_TO_UNIX = 116444736000000000i64; f64 GetUnixTimestamp() { FILETIME fileTime; GetSystemTimePreciseAsFileTime(&fileTime); s64 ticks = ((s64)fileTime.dwHighDateTime << (s64)32) | (s64)fileTime.dwLowDateTime; return (ticks - FILETIME_TO_UNIX) / (10.0 * 1000.0 * 1000.0); } s64 GetUnixTimestampNanoseconds() { FILETIME fileTime; GetSystemTimePreciseAsFileTime(&fileTime); s64 ticks = ((s64)fileTime.dwHighDateTime << (s64)32) | (s64)fileTime.dwLowDateTime; // in 100ns ticks s64 unix_time = (ticks - FILETIME_TO_UNIX); // in 100ns ticks s64 unix_time_nanoseconds = unix_time * 100; return unix_time_nanoseconds; } #endif #if OS_LINUX #endif