【发布时间】:2011-06-12 17:52:48
【问题描述】:
我试图在 +- 100 毫秒内每秒保存一个文件(10% 错误)。我遇到的问题是我的计时测量表明执行需要 1150 毫秒,但实际上它似乎是 3 或 4 秒。
发生了什么事?
如果我发出命令 sleep(1),它似乎非常准确。但是,当我测量某件事花费了多长时间时,它肯定相差不少。
我正在使用clock() 来测量程序执行情况。所有这些东西都在一个while循环中。
沃尔特
【问题讨论】:
我试图在 +- 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
【讨论】: