gpt4 book ai didi

c - 使用sleep()时计算执行时间

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:44:13 25 4
gpt4 key购买 nike

我正在尝试从beagle bone中的adc读取数据,运行angstrom linux发行版。我需要使用像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()会抢先我的程序,但我不确定。
我还需要计算包括延迟在内的已用执行时间的其他选项是什么?

最佳答案

计算执行时间的解决方案是在程序开始和结束时获取时间戳。那就改变吧。

#include <stdio.h>
#include <time.h>

int main() {

time_t begin;
time(&begin);

// Somethings

time_t end;
time(&end);

printf("Execution time %f\n", difftime(end, begin));
return (0);
}

编辑:
#include <stdio.h>
#include <time.h>
#include <sys/time.h>

int main() {

struct timeval tv;
gettimeofday(&tv, NULL);

double begin =
(tv.tv_sec) * 1000 + (tv.tv_usec) / 1000 ;


sleep(2);

gettimeofday(&tv, NULL);

double end =
(tv.tv_sec) * 1000 + (tv.tv_usec) / 1000 ;

printf("Execution time %f\n", end - begin);
return (0);
}

关于c - 使用sleep()时计算执行时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22661300/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com