-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathProcessorUsage.h
46 lines (35 loc) · 945 Bytes
/
ProcessorUsage.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#pragma once
class ProcessorUsage
{
public:
ProcessorUsage()
{
GetSystemTimes((LPFILETIME)&s_idleTime, (LPFILETIME)&s_kernelTime, (LPFILETIME)&s_userTime);
}
ProcessorUsage::~ProcessorUsage() {}
// Return a value between 0-256, where 0 is 0% cpu usage and 256 is 100% usage
int GetUsage()
{
__int64 idleTime;
__int64 kernelTime;
__int64 userTime;
GetSystemTimes((LPFILETIME)&idleTime, (LPFILETIME)&kernelTime, (LPFILETIME)&userTime);
int cpu;
__int64 usr = userTime - s_userTime;
__int64 ker = kernelTime - s_kernelTime;
__int64 idl = idleTime - s_idleTime;
__int64 sys = (usr + ker);
if (sys)
cpu = int((sys - idl) * 256 / sys); // System Idle take 100 % of cpu;
else
cpu = 0;
s_idleTime = idleTime;
s_kernelTime = kernelTime;
s_userTime = userTime;
return cpu;
}
private:
__int64 s_idleTime;
__int64 s_kernelTime;
__int64 s_userTime;
};