<aside> 🖼️
MFC C++에서 CPU 사용률을 확인하고 반환하는 코드를 작성하는 것은 복잡할 수 있습니다.
그러나, 일반적으로는 Windows API와 Performance Data Helper(PDH) 라이브러리를 사용하여 CPU 사용률을 측정할 수 있습니다
위의 코드는 전체 CPU 사용률을 측정합니다. 이 코드는 init 함수에서 PDH 쿼리를 초기화하고, CPU 사용률 카운터를 추가합니다. 그런 다음 getCurrentValue 함수에서 현재 CPU 사용률을 측정하고 반환합니다.
이 코드는 전체 시스템의 CPU 사용률을 반환합니다. 특정 프로세스의 CPU 사용률을 측정하려면 더 복잡한 접근 방식이 필요하며, 이는 Windows API의 GetProcessTimes 함수를 사용하여 구현할 수 있습니다.
그러나 이러한 방법들은 모두 운영체제 수준에서 CPU 사용률을 측정합니다. 따라서, 이들은 프로세서의 실제 '컴퓨팅 파워’를 측정하지는 않습니다.
</aside>
#include <windows.h>
#include <pdh.h>
static PDH_HQUERY cpuQuery;
static PDH_HCOUNTER cpuTotal;
void init(){
PdhOpenQuery(NULL, NULL, &cpuQuery);
PdhAddCounter(cpuQuery, L"\\\\Processor(_Total)\\\\% Processor Time", NULL, &cpuTotal);
PdhCollectQueryData(cpuQuery);
}
double getCurrentValue(){
PDH_FMT_COUNTERVALUE counterVal;
PdhCollectQueryData(cpuQuery);
PdhGetFormattedCounterValue(cpuTotal, PDH_FMT_DOUBLE, NULL, &counterVal);
return counterVal.doubleValue;
}
int main() {
init();
while (true) {
Sleep(1000);
std::cout << "Current CPU usage: " << getCurrentValue() << "%" << std::endl;
}
return 0;
}
wmic cpu get NumberOfCores : cpu물리코어 개수
wmic cpu get NumberOfLogicalProcessors : cpu논리코어 개수
wmic cpu get loadpercentage : cpu사용량
wmic cpu get name, CurrentClockSpeed, MaxClockSpeed : cpu이름, 현재클럭, 최대클럭
wmic OS get FreePhysicalMemory : memory사용량
wmic MEMORYCHIP get BankLabel,DeviceLocator,Capacity,Speed
wmic memphysical get MaxCapacity, MemoryDevices : memory최대, 장치 개수
wmic diskdrive get model,size,status : disk드라이브 정보
#include <cstdlib>
int main() {
system("wmic cpu get loadpercentage");
return 0;
}
목표 : 특정 함수가 있을때와 없을때 자원(cpu/memory)-사용량 차이가 얼마나 발생하는지 알려주는 코드
1.전체 사이클마다 1번씩 자원-사용량을 측정한다.
2.특정 함수명을 식별한다.
3.해당 함수를 실행할때 자원-사용량을 측정한다.
4.해당 함수가 실행되지 않게하고 자원-사용량을 측정한다.
5.1~4를 수행했을때, "특정함수명 : cpu/memory 증분량" 를 log로 남긴다.
#2
void CThis::MyFunction()
{
std::cout << __FUNCTION__ << std::endl;
}
------------------
CThis::MyFunction