【发布时间】:2010-02-19 11:43:03
【问题描述】:
我需要在接近 3 秒时退出循环,所以我需要计算经过的时间。
我正在将一些代码从 Java 移动到 C,并且我在 Java 中使用了简单的 System.nanoTime(),
我将如何在 C 中做到这一点?
我注意到 time(NULL) 将返回秒,但我正在寻找更精确的。
提前谢谢你
【问题讨论】:
我需要在接近 3 秒时退出循环,所以我需要计算经过的时间。
我正在将一些代码从 Java 移动到 C,并且我在 Java 中使用了简单的 System.nanoTime(),
我将如何在 C 中做到这一点?
我注意到 time(NULL) 将返回秒,但我正在寻找更精确的。
提前谢谢你
【问题讨论】:
对于您想要的分辨率,C 标准库中的clock() 就足够了:
#include <time.h>
#define RUNTIME_MAX_SEC 3
clock_t start = clock();
while(clock() - start < CLOCKS_PER_SEC * RUNTIME_MAX_SEC)
{ ... }
【讨论】:
使用 gettimeofday ,它有微秒级的分辨率。 Java 中的 System.nanoTime() 通常使用 *nixes 上的 gettimeofday 来实现
【讨论】: