gpt4 book ai didi

C++将高分辨率时钟与固定数字进行比较

转载 作者:行者123 更新时间:2023-11-28 01:26:39 26 4
gpt4 key购买 nike

我正在使用模拟器,但我不明白如何将使用 chrono 库测量的耗时与固定数字(CPUCycles * 0.0000005)进行比较.

有点像

auto lastTime = std::chrono::steady_clock::now();
while (condition)
{
if ((std::chrono::steady_clock::now() - lastTime) >= (CPUCycles * 0.0000005))
{
//do something;
}
else
{
//do something else;
}
}

那一刻给我的错误

Error C2676 binary '>=': 'std::chrono::duration<__int64,std::nano>' does not define this operator or a conversion to a type acceptable to the predefined operator

最佳答案

std::chrono::steady_clock::now() - lastTime 返回 duration因此你需要将它与持续时间进行比较。这意味着什么取决于您的比较值意味着什么。最好/正确的方法是将其转换为持续时间。

所以您的 CPUCycles * 500 返回以纳秒为单位的持续时间? (0.0000005 == 500e-9) 然后告诉编译器:

if ((std::chrono::steady_clock::now() - lastTime) >= CPUCycles * std::chrono::nanoseconds(500))

看看这传达的意思有多清晰?每 500ns 有 1 个周期 -> 所以你的时间是 CPUCycles 乘以那个。

另一种方法是使用成员函数 count() 获取持续时间的计数,但您最希望首先转换持续时间:

auto diff = std::chrono::steady_clock::now() - lastTime;
if(std::chrono::duration_cast<std::chrono::nanoseconds>(diff).count() >= CPUCycles * 500) ...

但这失去了 chrono 给你的所有清晰度。

关于C++将高分辨率时钟与固定数字进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53460300/

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