gpt4 book ai didi

c++ - 从时钟周期获取时间

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:25:05 25 4
gpt4 key购买 nike

我正在运行 QNX,

我使用了一个函数来获取每秒的时钟周期,

uint64_t clockPerSec = getCPS();
uint64_t currentClockCycle = getCurrentCycle();

函数

uint64_t getCPS()
{
return (~(uint64_t)0) /SYSPAGE_ENTRY(qtime) -> cycles_per_sec;
}

uint63_t getCurrentCycle()
{
return ClockCycles();
}

然后在运行一个函数之后

我愿意

currentClockCycle = getCurrentCycle() - currentClockCycle;

我没有在整个应用程序中使用它,所以我没有时钟超限/溢出,只是为了在一些添加/更改后测量一个功能的性能。

无论如何,我只是想知道我是否得到了正确的输出。

我是这样算出来的结果,

double result = static_cast<double>(clockPerSec)/currentClockCycle;
// this get me the time in second??
// then multiplied it by 1000000 to get a micro-sec measurement

我做错了什么吗?

使用时

ftime(&t_start);

然后

ftime(&t_end);

然后这样输出差值,我看到我得到的时间比较大,差不多是两倍

第一种方法我得到 0.6 毫秒第二个使用 ftime 我得到结果 1.xx ms

最佳答案

您只需混合(测量)两种不同的东西:时钟周期是内核为您的应用提供的 CPU 滴答计数——它不计算正在运行的其他应用通过相同的内核。而 ftime 返回绝对(挂钟)时间。所以两个 ftimes 之间的差异返回两个时间点之间的绝对持续时间。虽然第一个计数只是衡量您的(并且只有您的)应用程序消耗了多少 CPU ticks...因此您可以将其视为专用于您的应用程序运行时间——即如果没有此主机上的其他应用程序,第一次和第二次测量将(理论上)相等(或左右)。

关于c++ - 从时钟周期获取时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18089219/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com