我正在尝试为我将在实验室的实验中使用的某些代码获取准确的执行时间。我在尝试一些简单的代码,但是我总是得到不同的执行时间。您能帮我解决这个问题吗?
我正在尝试的代码是这个
#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
for (int i = 0; i < 10000000; ++i)
{/*
code
*/}
gettimeofday(&timecheck, NULL);
end = (long)timecheck.tv_sec * 1000 + (long)timecheck.tv_usec / 1000;
printf("%ld milliseconds elapsed\n", (end - start));
return 0;
}
结果像这样
经过227毫秒
经过231毫秒
经过228毫秒
答案 0 :(得分:3)
3-5毫秒的偏差不是要担心的事情。这几乎要四舍五入。
如果差异更大,那么许多因素都可以在这里发挥作用: