21xrx.com
2024-06-03 00:03:01 Monday
登录
文章检索 我的文章 写文章
C++计算程序CPU占用率的实现方法
2023-06-28 12:37:42 深夜i     --     --
C++ 计算程序 CPU占用率 实现方法

在编写计算程序时,我们需要关注程序的性能,其中CPU占用率是一个非常重要的指标。C++作为一种高级编程语言,在实现CPU占用率的计算方面具有很大的优势。

C++中实现CPU占用率计算的方法包括两种:一种是使用操作系统提供的API,另一种是使用C++编写自己的代码实现计算。下面我们分别来介绍这两种方法。

第一种方法,可以使用Windows API,通过函数GetProcessTimes、GetCurrentProcess和GetSystemTimes获取当前程序以及整个系统的CPU时间,然后计算出CPU占用率。下面是具体的实现代码:


#include <windows.h>

#include <iostream>

int main()

{

  FILETIME idle_time, kernel_time, user_time;

  ULARGE_INTEGER idle_time_li, kernel_time_li, user_time_li;

  DWORDLONG idle, kernel, user;

  double percent;

  if (GetSystemTimes(&idle_time, &kernel_time, &user_time))

  {

    idle_time_li.LowPart = idle_time.dwLowDateTime;

    idle_time_li.HighPart = idle_time.dwHighDateTime;

    idle = idle_time_li.QuadPart;

    kernel_time_li.LowPart = kernel_time.dwLowDateTime;

    kernel_time_li.HighPart = kernel_time.dwHighDateTime;

    kernel = kernel_time_li.QuadPart;

    user_time_li.LowPart = user_time.dwLowDateTime;

    user_time_li.HighPart = user_time.dwHighDateTime;

    user = user_time_li.QuadPart;

    percent = ((double)(kernel + user - idle) / (kernel + user)) * 100.0;

    std::cout << "CPU占用率: " << percent << "%" << std::endl;

  }

  return 0;

}

第二种方法,可以使用C++自己编写代码实现CPU占用率计算。具体的实现方法为:在程序运行时,计算当前进程所使用的CPU时间和系统总CPU时间,然后计算出CPU占用率。

下面是具体的实现代码:


#include <iostream>

#include <chrono>

#include <thread>

int main()

{

  double process_start = clock();

  double system_start = std::chrono::duration_cast<std::chrono::milliseconds>(std::chrono::system_clock::now().time_since_epoch()).count();

  std::this_thread::sleep_for(std::chrono::milliseconds(1000));

  double system_end = std::chrono::duration_cast<std::chrono::milliseconds>(std::chrono::system_clock::now().time_since_epoch()).count();

  double process_end = clock();

  double process_cpu_usage = ((process_end - process_start) / CLOCKS_PER_SEC) * 100.0;

  double system_cpu_usage = ((system_end - system_start) / 10.0) * 100.0;

  double cpu_usage = (process_cpu_usage / system_cpu_usage) * 100.0;

  std::cout << "CPU占用率: " << cpu_usage << "%" << std::endl;

  return 0;

}

综上所述,CPU占用率是衡量程序性能的重要指标,通过使用C++编写代码实现或者使用操作系统API,我们可以很容易地实现CPU占用率计算的功能。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复