嵌入式平台测函数耗时

目前常见的测函数耗时有两种方式:

一、 clock

头文件#include <time.h>

其中预定义宏CLOCKS_PER_SEC代表每秒共有多少个clocks,可根据此宏在计算耗时。

#include <time.h>

clock_t start, stop;
double timeuse = 0.0;
start = clock();
...
stop = clock();
timeuse = (double)(stop-start)*1000/CLOCKS_PER_SEC; // ms
printf("timeuse: %.3f ms\n", timeuse);

二、 time

头文件#include <time.h>

#include <time.h>

struct timeval start;
struct timeval stop;
double timeuse = 0.0;

gettimeofday(&start, NULL);
...
gettimeofday(&stop, NULL);
timeuse = (double)((stop.tv_sec-start.tv_sec)*1000000+stop.tv_usec-start.tv_usec)/1000.0;
printf("timeuse: %.3f ms\n", timeuse);

 

此两种方案,推荐使用第二种!!

若为纯C代码,两种方法测出的耗时一致;但在嵌入式平台上,第一种方法测出的耗时在某些情况下有问题。

具体场景:在嵌入式平台,使用硬件去处理某些任务时,若本身demo较简单,且采用阻塞式等待硬件完成。在此情况下,测出的耗时偏小,且不正确。

推测原因:简单任务时,硬件等待,系统中的clocks个数不增加或不准确。从而导致算出的时间较小。

解决方案:采用第二种方式!!

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值