相关疑难解决方法(0)

如何在Linux/Windows上测量CPU时间和挂钟时间?

我的意思是:我如何测量我的CPU花在功能执行上的时间和运行我的功能所需的挂钟时间?(我对Linux/Windows以及x86和x86_64感兴趣).看看我想做什么(我在这里使用C++,但我更喜欢C解决方案):

int startcputime, endcputime, wcts, wcte;

startcputime = cputime();
function(args);
endcputime = cputime();

std::cout << "it took " << endcputime - startcputime << " s of CPU to execute this\n";

wcts = wallclocktime();
function(args);
wcte = wallclocktime();

std::cout << "it took " << wcte - wcts << " s of real time to execute this\n";
Run Code Online (Sandbox Code Playgroud)

另一个重要问题是:这种类型的时间测量架构是否独立?

c c++ cpu performance time

46
推荐指数
3
解决办法
7万
查看次数

具有自动超频功能的多核处理器上的准确C / C ++时钟?

我研究了几个主题,以期获得有关如何使用C或C ++制作可靠时钟的一些想法。但是,我还看到一些函数使用处理器的滴答声和每秒滴答声来计算最终结果,我认为这对像我这样拥有自动超频功能的CPU可能是个问题。我还看到其中一个在一段时间后重置,因此不是很可靠。

这个想法是要制作一个(最好是跨平台的)时钟,就像游戏中的时钟一样,其精度要优于第二个时钟,以便能够将“当前会话”中的经过时间与最后保存的时间相加该程序。这将是计算在没有游戏内时钟的主机游戏上花费的时间,以及从长远来看可能将其集成到实际PC游戏中的时间。

它应该能够在不占用过多或全部CPU时间(或多核CPU为单核时间)的情况下运行,因为仅将所有这些资源用于时钟以及在具有自动-超频(否则可能会导致结果不准确)。

我现在想在其中实现此功能的程序看起来像这样,但是我可能会用C重新编码(因为我必须回到学习如何用C ++编码的方式):

#include <iostream>
#include <cstdlib>

using namespace std;

int main()
{
    cout << "In game" << endl;
    system("PAUSE");
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

顺便说一句,我仍然需要摆脱特定于Windows的PAUSE功能,但是我认为可以通过一个简单的“ while(char!='\ n')”循环来解决。

我已经浏览过的内容:

(编辑:额外的研究,特别是对于C实现:

问题在于尚不清楚上述提到的某些方法(例如Boost或SDL2)在自动超频方面是否表现正常。

TL; DR:我应该使用什么跨平台功能在C / C ++中创建一个精确的,亚秒级的精确计数器,该计数器可以在多核和/或自动超频处理器上工作?

提前致谢。

c c++ performance cross-platform clock

5
推荐指数
0
解决办法
851
查看次数

标签 统计

c ×2

c++ ×2

performance ×2

clock ×1

cpu ×1

cross-platform ×1

time ×1