我正在尝试测量 C 中的一些事件(矩阵乘法)并注意到我应该做这样的事情:
clock_t start = clock();
sleep(3);
clock_t end = clock();
double elapsed_time = (end - start)/(double)CLOCKS_PER_SEC;
printf("Elapsed time: %.2f.\n", elapsed_time);
输出是:
Elapsed time: 0.00.
为什么会这样?
最佳答案
clock
估计程序使用的 CPU 时间;那是 CPU 一直忙于执行属于您的程序的指令的时间。 sleep
不执行任何工作,因此它不会占用明显的 CPU 时间(即使它需要挂钟时间)。
如果你想测量挂钟时间,使用time
:
time_t start = time(NULL);
sleep(3);
printf("%.2f\n", (double)(time(NULL) - start));
将打印出接近三的数字。
关于c - 在 C 中测量时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13156031/