【问题标题】:Log CPU Usage in Visual Studio在 Visual Studio 中记录 CPU 使用情况
【发布时间】:2017-12-04 01:04:44
【问题描述】:

我想在 Visual Studio 中记录我的 C 程序的 CPU 使用率。使用性能配置文件我可以查看我的 C 程序的 CPU 使用情况的图形表示。但是我应该做什么或者应该添加什么代码到我现有的代码中,以便我可以在文本或 Excel 文件中记录我的程序每秒的 CPU 使用率。

【问题讨论】:

标签: c++ visual-studio logging cpu-usage


【解决方案1】:

可能最简单的做法是创建一个线程,它只使用GetProcessTimes 获取进程的当前 CPU 使用率,将其写入文件,休眠一秒钟,然后重复。然后,您可以(例如)设置一个信号来告诉它退出:

FILETIME creation, done, kernel, user;
int PID;

std::atomic<bool> finished = false;

std::thread logger([&] {
    printf("seconds\n");
    while (!finished) {
        GetProcessTimes(GetCurrentProcess(), &creation, &done, &kernel, &user);

        SYSTEMTIME used_k, used_u;

        FileTimeToSystemTime(&kernel, &used_k);
        FileTimeToSystemTime(&user, &used_u);

        DWORD milliseconds = used_k.wMilliseconds + used_u.wMilliseconds;
        DWORD seconds = used_k.wSecond + used_u.wSecond;

        printf("%d.%3.3d\n", seconds, milliseconds);
        Sleep(1000);
    }
});

// Do work to be timed/logged here

finished = true;
logger.join();

【讨论】:

  • ok.. 我不知何故能够每秒获得我的程序的 cpu 使用率。但是当我添加代码以便可以将控制台输出写入 csv 文件时,程序会抛出一个异常,说有一些整数除以零。我该怎么办? @杰里棺材
  • @JessieBunny:我的水晶球告诉我错误在第 42 行。说真的:我无法根据该描述诊断您的代码。我想你应该做的是调试你的代码。
猜你喜欢
  • 2015-11-01
  • 1970-01-01
  • 2012-07-04
  • 2021-08-21
  • 1970-01-01
  • 2012-02-01
  • 2013-09-26
  • 2020-03-30
  • 1970-01-01
相关资源
最近更新 更多