【发布时间】:2014-05-04 20:57:18
【问题描述】:
我正在尝试从运行 Angstrom Linux 发行版的 Beagle Bone 中的 ADC 读取数据。我需要使用像sleep() 这样的延迟机制,只在特定时间读取样本,以帮助符合特定的采样率。
我还需要计算执行时间。
这是一个示例 POC(概念证明),用于演示我面临的问题:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
clock_t begin, end;
while(1)
{
begin = clock();
sleep(1); // delay for 1 sec
end = clock();
printf("Execution time = %f\n",((float)(end-begin)/CLOCKS_PER_SEC));
}
}
我总是得到0.000000的执行时间。
为什么我没有得到1.000000 秒的结果?我的猜测是调用sleep() 会抢占我的程序,但我不确定。
我还有什么其他选项可以计算包含延迟的执行时间?
【问题讨论】:
-
sleep() 不需要毫秒吗?
-
no sleep() 以秒为单位,usleep() 以微秒为单位
-
尝试 printf("执行时间 = %f\n",((float)end-(float)begin)/CLOCKS_PER_SEC));
-
@HubertSchölnast 应该没什么区别。