linux c/c++ code统计耗时

在资源紧张的嵌入式平台做开发时,经常需要对所实现的功能进行性能优化,这时就还需要评估优化的效果!

对代码进行性能评估时,获取当前时刻非常重要,c++和c版本的获取当前时刻的实现,分别如下,

//c++

#include <time.h>
#define MICRO_IN_SECOND 1000000
#define NANOS_IN_SECOND 1000000000

double currentTimeInMiliSeconds() {
    struct timespec res;
    double ret = 0;
    clock_gettime(CLOCK_MONOTONIC, &res);
    ret = (double)(res.tv_sec * NANOS_IN_SECOND + res.tv_nsec) / MICRO_IN_SECOND;

    return ret;
}

double t1 = currentTimeInMiliSeconds();

//需要统计时间的code

double t2 = currentTimeInMiliSeconds();

cout<<"ProcessFrameArrive time "  << t2 - t1 << endl;

 

 

//c

#include <time.h>

UINT32 perf_get_current(VOID)
{
    UINT32  rt;
    struct  timeval    tv;
    struct  timezone   tz;

    gettimeofday(&tv,&tz);
    rt = (UINT32)(((UINT64)(tv.tv_sec) * 1000000) + (UINT64)((tv.tv_usec) & 0xFFFFFFFF));
    return rt;
}

 

UINT32 time1 = perf_get_current();

UINT32 time2 = perf_get_current();

printf("t2(%dus)-t1(%dus) is %dms\n", time2, time1, (time2-time1)/1000);

 

 

//统计fps

#define FRM_TIME_MSR 30 ///< number of frames to measure the time and fps

unsigned long lTimeStart = 0, lTimeEnd = 0, lTimeDiff = 0;

GETTIME(&lTimeStart);

//in while

         if((mFrmCnt%FRM_TIME_MSR) == 0) {

             GETTIME(&lTimeEnd);

             lTimeDiff  = lTimeEnd - lTimeStart;

             lTimeStart = lTimeEnd;

      

             printf("%u frames took %lu usec (%5.2ffps).",

                 FRM_TIME_MSR, lTimeDiff,

                 (FRM_TIME_MSR*1000000.0)/((float)lTimeDiff));

         }

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小帆别吃糖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值