aal*_*987 18 c time matrix multiplying
我正在尝试用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);
Run Code Online (Sandbox Code Playgroud)
输出是:
Elapsed time: 0.00.
Run Code Online (Sandbox Code Playgroud)
为什么会这样?
Fre*_*Foo 30
clock估计程序使用的CPU时间; 这是CPU忙于执行属于您的程序的指令的时间.sleep不执行任何工作,因此它不需要显着的CPU时间(即使它需要挂钟时间).
如果要测量挂钟时间,请使用time:
time_t start = time(NULL);
sleep(3);
printf("%.2f\n", (double)(time(NULL) - start));
Run Code Online (Sandbox Code Playgroud)
将打印一个接近三个的数字.
另外,如果您想以更精确的方式(毫秒)测量执行时间,time则不够精确.你可以gettimeofday改用:
#include <stdio.h>
#include <unistd.h>
#include <sys/time.h>
int main() {
long start, end;
struct timeval timecheck;
gettimeofday(&timecheck, NULL);
start = (long)timecheck.tv_sec * 1000 + (long)timecheck.tv_usec / 1000;
usleep(200000); // 200ms
gettimeofday(&timecheck, NULL);
end = (long)timecheck.tv_sec * 1000 + (long)timecheck.tv_usec / 1000;
printf("%ld milliseconds elapsed\n", (end - start));
return 0;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
28495 次 |
| 最近记录: |