mono/packages/kbot/cpp/src/sys_metrics.cpp
2026-03-29 21:19:22 +02:00

37 lines
956 B
C++

#include "sys_metrics.h"
#ifdef _WIN32
#define NOMINMAX
#include <windows.h>
#include <psapi.h>
#pragma comment(lib, "psapi.lib")
namespace polymech {
size_t get_current_rss_mb() {
PROCESS_MEMORY_COUNTERS info;
if (GetProcessMemoryInfo(GetCurrentProcess(), &info, sizeof(info))) {
return (size_t)(info.WorkingSetSize) / (1024 * 1024);
}
return 0;
}
uint64_t get_cpu_time_ms() {
FILETIME creationTime, exitTime, kernelTime, userTime;
if (GetProcessTimes(GetCurrentProcess(), &creationTime, &exitTime, &kernelTime, &userTime)) {
ULARGE_INTEGER kernel, user;
kernel.LowPart = kernelTime.dwLowDateTime;
kernel.HighPart = kernelTime.dwHighDateTime;
user.LowPart = userTime.dwLowDateTime;
user.HighPart = userTime.dwHighDateTime;
return (kernel.QuadPart + user.QuadPart) / 10000;
}
return 0;
}
}
#else
namespace polymech {
size_t get_current_rss_mb() { return 0; }
uint64_t get_cpu_time_ms() { return 0; }
}
#endif