dsecnd_INT_CPU_TIME.cpp File Reference
#include <ctime>

Functions

double dsecnd_ ()
 

Function Documentation

◆ dsecnd_()

double dsecnd_ ( )
23  {
24 #ifdef _WIN32
25  // For MSVC, use `GetProcessTimes` for proper CPU time - MSVC uses
26  // a non-standard `std::clock` implementation (see
27  // https://learn.microsoft.com/en-us/cpp/c-runtime-library/reference/clock?view=msvc-170).
28  // GetProcessTimes() uses 100-nanosecond time units.
29  FILETIME creation_time, exit_time, kernel_time, user_time;
30  GetProcessTimes(GetCurrentProcess(), &creation_time, &exit_time, &kernel_time, &user_time);
31  ULARGE_INTEGER user;
32  user.HighPart = user_time.dwHighDateTime;
33  user.LowPart = user_time.dwLowDateTime;
34  uint64_t time_100ns = user.QuadPart;
35  return static_cast<double>(time_100ns) / 10000000.0;
36 #else
37  return static_cast<double>(std::clock()) / static_cast<double>(CLOCKS_PER_SEC);
38 #endif
39 }
std::uint64_t uint64_t
Definition: Meta.h:42