#import <stdio.h>
#import <time.h>
int main (void) {
printf("Clock ticks per second: %d\n", CLOCKS_PER_SEC);
double check = clock();
int timex = time(NULL);
for (int x = 0; x <= 500000; x++) {
printf(".");
}
puts("\n");
printf("Total Time by Clock: %7.7f\n", (clock() - check) / CLOCKS_PER_SEC );
printf("Total Time by Time: %d\n", time(NULL) - timex);
getchar();
}
当我执行上面的代码时,我得到的结果如下:
时钟总时间:0.0108240
时间总计:12
我想让clock()代表一个尽可能接近时间的数字。
上面显示的总时间是在macbook上完成的,但是,我的笔记本电脑(windows)上的代码效果非常好。
CLOCKS_PER_SECOND宏在PC上返回1000,在MAC上返回1,000,000。
答案 0 :(得分:8)
clock()返回挂钟时间。 * nixes上的clock()返回你的程序花费的CPU时间,这不会很多,你在这里做I / O时可能会被阻止。
答案 1 :(得分:1)
printf()到控制台为每个函数调用进行系统调用,在控制台重绘等中花费的时间不计入处理时间。
在那里进行一些繁重的计算。
for (long int x = 0; x <= 5000000000; x++) {
sqrt(2.9999);
}
答案 2 :(得分:0)
time()
返回time_t
。当您将其分配给int
时,您可能会丢失信息。如果您在整个过程中使用time_t
会怎样?
int main(void) {
time_t timex = time(0);
/* ... */
printf("%d", (int)(time(0) - timex));
}