不使用系统时钟的时间测量

时间:2014-01-02 16:05:29

标签: c++ linux time measure elapsedtime

有没有办法在不使用系统时钟的情况下测量linux / unix中的经过时间? 问题是系统时钟在某些情况下会发生变化,而timegettimeofday或其他类似情况会导致经过的时间变得不正确。

我正在考虑创建单独的线程,该线程在内部执行sleep(100)循环并计算重复次数。

有更好的解决方案吗?

4 个答案:

答案 0 :(得分:6)

std::chrono::steady_clock可用于衡量时间,并考虑系统时钟的变化。

答案 1 :(得分:4)

使用单调时间,表示从某点开始的时间:http://linux.die.net/man/3/clock_gettime

int64_t get_monotonic_timestamp(void)
{
    struct timespec ts;
    clock_gettime(CLOCK_MONOTONIC, &ts);
    return (int64_t)ts.tv_sec * 1000000 + ts.tv_nsec / 1000;
}

答案 2 :(得分:2)

使用sleep(或变体)测量经过的时间是一个坏主意。在经过的休眠时间之后,你的线程可以随时醒来,所以这肯定是不准确的。

答案 3 :(得分:1)

对于延时,您可以使用例如select