1

我尝试过搜索,但没有真正找到满足我要求或解释得足够清楚的这个问题的答案。

我正在寻找一个函数或一种方法来实现一个函数,该函数可以以与 timeGetTime() 函数在 Windows 中相同的方式检索滴答数或毫秒数。

我正在寻找一种仅使用标准 C++、没有其他库或平台细节的解决方案(例如 windows 上的 timeGetTime() 或 linux 等价物;多平台解决方案)。

我试图在库的较低级别保持我的代码平台独立,我只想知道是否有人可以告诉我/指出我将类似于 timeGetTime() 的东西放在一起的方式。

谢谢

更新:我不一定要寻找高性能和准确性,我只需要毫秒精度即可查看自上次检查以来已经过去了多少时间。

4

2 回答 2

5

您可以使用<chrono>C++11 中添加的 ever so verbose 库。

它具有不同类型的时钟,具体取决于您的需求,system_clock它是唯一可以使用的时钟,time_t并且high_resolution_clock是具有最小刻度的时钟。

用它来计时事情相对简单,例如:

#include <iostream>
#include <chrono>

int main() {
    auto now = std::chrono::high_resolution_clock::now();
    //do stuff here
    auto then = std::chrono::high_resolution_clock::now();
    std::cout << std::chrono::duration_cast<std::chrono::milliseconds>(then-now).count();
}
于 2013-02-09T00:33:23.170 回答
4

C++11 添加了标头<chrono>,它提供了一种标准化的方式来读取系统时间,其分辨率比旧的localtime. 然而,准确度因平台而异。

steady_clock课程可能对您最有用。

于 2013-02-09T00:25:42.737 回答