我试图在 +- 100 毫秒内每秒保存一个文件(10% 错误)。我遇到的问题是我的时间测量表明执行需要 1150 毫秒,但实际上它似乎是 3 或 4 秒。
这是怎么回事?
如果我发出命令 sleep(1),它似乎非常准确。然而,当我测量某件事花了多长时间时,它一定会偏离很多。
我正在使用 clock() 来测量程序执行。所有这些东西都在一个while循环中。
沃尔特
您的问题是clock()
报告您的进程使用的 CPU 时间,它通常与使用的“实际”时间不同。
例如下面的代码:
#include <time.h>
#include <iostream>
#include <unistd.h>
using namespace std;
int main()
{
clock_t scl = clock();
sleep(1);
cout << "CPU clock time " << clock()-scl << endl;
}
给
time ./a.out
CPU clock time 0
real 0m1.005s
user 0m0.000s
sys 0m0.004s