From 90c8e4f4c071cab408cd1118f830596badf713ef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcin=20Pi=C4=85tkowski?= Date: Wed, 28 May 2025 16:21:56 +0200 Subject: [PATCH] Added time and memory measurement for windows. (#4) --- reactics-bdd/memtime.hh | 43 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/reactics-bdd/memtime.hh b/reactics-bdd/memtime.hh index 992cbf0..69eac41 100644 --- a/reactics-bdd/memtime.hh +++ b/reactics-bdd/memtime.hh @@ -5,7 +5,12 @@ #define __MEMTIME_H__ #include +#ifdef __WIN32__ +#include +#include +#else #include +#endif #if defined(__APPLE__) #include #endif @@ -17,6 +22,25 @@ using namespace std; typedef long long int64; +#ifdef __WIN32__ + +static inline double cpuTime() +{ + FILETIME createTime, exitTime, kernelTime, userTime; + + if (!GetProcessTimes(GetCurrentProcess(), &createTime, &exitTime, &kernelTime, &userTime)) { + return 0.0; + } + + ULARGE_INTEGER u; + u.LowPart = userTime.dwLowDateTime; + u.HighPart = userTime.dwHighDateTime; + + return (double)u.QuadPart / 10e6; +} + +#else + static inline double cpuTime(void) { struct rusage ru; @@ -24,6 +48,8 @@ static inline double cpuTime(void) return (double)ru.ru_utime.tv_sec + (double)ru.ru_utime.tv_usec / 1000000; } +#endif + static inline int memReadStat(void) { char name[256]; @@ -47,11 +73,28 @@ static inline int memReadStat(void) return value; } + +#ifdef __WIN32__ + +static inline int64 memUsedInt64() +{ + PROCESS_MEMORY_COUNTERS pmc; + if (GetProcessMemoryInfo(GetCurrentProcess(), &pmc, sizeof(pmc))) { + return (int64) pmc.WorkingSetSize; + } + + return 0; +} + +#else + static inline int64 memUsedInt64() { return (int64)memReadStat() * (int64)getpagesize(); } +#endif + #if defined(__APPLE__) static inline double memUsed()