|
发表于 2009-11-3 03:25:56
|
显示全部楼层
IP:江苏扬州
嗯,随便写了个,可以获取当前进程占用cpu时间,你可以把其中的获取时间写成函数,还可以在要统计的一段程序前后获取时间然后算差值就可以知道一段程序的cpu占用时间,不过这种方法有个缺陷就是只能精确到毫秒
- #include<windows.h>
- #include <iostream>
- using namespace std;
- void main()
- {
- int i, j;
- HANDLE hProcess;
- FILETIME ft1, ft2, ftKernel, ftUser;
- SYSTEMTIME stKernel, stUser;
- ULONG ulTime;
- DWORD dwProcID = GetCurrentProcessId();
- hProcess = OpenProcess( PROCESS_ALL_ACCESS, FALSE, dwProcID );
- for (i = 0; i < 100000; i ++)
- {
- for (j = 0; j < 10000; j ++)
- {
- int x = 9;
- }
- }
- Sleep(8000); //这里写个sleep是想告诉你这种统计方法是不会将Sleep这种基本不耗cpu的时间损耗计算在内,最后结果根据个人的计算机来定,应该不会超过8秒
- GetProcessTimes(hProcess, &ft1, &ft2, &ftKernel, &ftUser);
- FileTimeToSystemTime(&ftKernel, &stKernel);
- FileTimeToSystemTime(&ftUser, &stUser);
- ulTime = stKernel.wSecond * 1000 + stKernel.wMilliseconds + stUser.wSecond * 1000 + stUser.wMilliseconds;
- cout<<ulTime<<endl;
- system("pause");
- }
复制代码 |
|