ultimatepp/uppdev/timep/timep.cpp
cxl 351994a6cc Adding uppdev....
git-svn-id: svn://ultimatepp.org/upp/trunk@328 f0d560ea-af0d-0410-9eb7-867de7ffcac7
2008-08-15 08:36:24 +00:00

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;
}