mirror of
https://github.com/ultimatepp/ultimatepp.git
synced 2026-05-16 06:05:58 -06:00
43 lines
1.2 KiB
C++
43 lines
1.2 KiB
C++
#include "windows.h"
|
|
#include "psapi.h"
|
|
#include "stdio.h"
|
|
|
|
typedef __int64 int64;
|
|
|
|
double tm64(int64 x)
|
|
{
|
|
return double(x / 10000) / 1000;
|
|
}
|
|
|
|
int main (int argc, const char *argv []) {
|
|
STARTUPINFO startup;
|
|
PROCESS_INFORMATION pinfo;
|
|
PROCESS_MEMORY_COUNTERS mem;
|
|
HANDLE hProc;
|
|
union {
|
|
int64 time;
|
|
FILETIME ft;
|
|
}
|
|
create, exit, kernel, user;
|
|
|
|
GetStartupInfo (&startup);
|
|
|
|
const char *s = strchr(GetCommandLine(), ' ');
|
|
CreateProcess(NULL, s ? s + 1 : "", NULL, NULL, TRUE,
|
|
NORMAL_PRIORITY_CLASS, NULL, NULL, &startup, &pinfo);
|
|
|
|
DuplicateHandle(GetCurrentProcess(), pinfo.hProcess, GetCurrentProcess(), &hProc,
|
|
PROCESS_QUERY_INFORMATION | SYNCHRONIZE, FALSE, 0);
|
|
WaitForSingleObject(hProc, INFINITE);
|
|
|
|
GetProcessMemoryInfo(hProc, &mem, sizeof(mem));
|
|
|
|
GetProcessTimes (hProc, &create.ft, &exit.ft, &kernel.ft, &user.ft);
|
|
printf("real:%6.3f user:%6.3f sys:%6.3f page:%4d KB work:%4d KB\n",
|
|
tm64(exit.time - create.time), tm64(user.time), tm64(kernel.time),
|
|
mem.PeakPagefileUsage >> 10, mem.PeakWorkingSetSize >> 10);
|
|
|
|
CloseHandle(pinfo.hThread); CloseHandle(pinfo.hProcess);
|
|
CloseHandle(hProc);
|
|
return 0;
|
|
}
|