如何用ANSI C测量时间毫秒?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (15)

仅使用ANSI C,有什么方法可以用毫秒精度或更高来度量时间?我在浏览time.h,但我只找到第二个精度函数。

提问于
用户回答回答于

没有提供优于1秒时间分辨率的ANSI C函数,但POSIX函数gettimeofday提供微秒分辨率。时钟功能仅测量进程花费的时间量,并且在许多系统上不准确。

你可以像这样使用这个功能:

struct timeval tval_before, tval_after, tval_result;

gettimeofday(&tval_before, NULL);

// Some code you want to time, for example:
sleep(1);

gettimeofday(&tval_after, NULL);

timersub(&tval_after, &tval_before, &tval_result);

printf("Time elapsed: %ld.%06ld\n", (long int)tval_result.tv_sec, (long int)tval_result.tv_usec);

Time elapsed: 1.000870在我的机器上返回。

用户回答回答于
#include <time.h>
clock_t uptime = clock() / (CLOCKS_PER_SEC / 1000);

扫码关注云+社区