对不起我是C的新手。但是我做错了什么?尝试了几乎所有的东西,但仍然无法计算在t1和t2之间执行代码的秒数,总是返回我 完成0.00秒。 感谢您的耐心:)
#include <time.h>
clock_t t1, t2;
t1 = clock();
sleep(5);
t2 = clock();
printf("\nFinished in %.2f seconds.\n\n", (t2-t1)*1.0/CLOCKS_PER_SEC);
答案 0 :(得分:1)
如果粗粒度(整秒)没问题,那么time(2)
和time_t
就足够了。
示例:
#include <stdio.h>
#include <time.h>
#include <unistd.h>
static time_t t1, t2;
int
main(void)
{
t1 = time(0);
(void) sleep(5);
t2 = time(0);
(void) printf("\nFinished in %d seconds.\n\n", (int) (t2-t1));
return 0;
}
答案 1 :(得分:0)
似乎clock_t
没有将输入帐户视为“挂起时间”,而是CPU时间。
当CPU休眠5秒钟时,CPU无法有效地执行代码。
答案 2 :(得分:0)
clock()
不适合测量经过的时间。它的分辨率通常非常低,它只测量CPU时间,而不是测量时间。如果你的目标是Unix,你应该使用clock_gettime(CLOCK_MONOTONIC, ...)
。在Windows上QueryPerformanceCounter()
是要使用的API。
值得注意的是gettimeofday()
也不合适,因为它受到闰秒和网络时间协议调整的影响。