记录一下c/c++的几种计时方式

#include <iostream>
#include <string>
#include <chrono>


void Run(){
    for(int i=0; i<10000000; i++){

    }
}

void timeConsumed1(){
    clock_t startTime = clock();
    Run();
    clock_t endTime = clock();
    double spendSecond = (double)(endTime-startTime)/CLOCKS_PER_SEC;
    std::cout<<"spend time : "<<std::endl
    <<spendSecond<<" s"<<std::endl;}

void timeConsumed2(){
    std::chrono::high_resolution_clock::time_point startTime = std::chrono::high_resolution_clock::now();
    Run();
    std::chrono::high_resolution_clock::time_point endTime = std::chrono::high_resolution_clock::now();

    //秒
    double duration_second = std::chrono::duration<double>(endTime - startTime).count();
    std::cout << duration_second << " s" << std::endl;
}

void timeConsumedInMilli(){
    auto startTime = std::chrono::steady_clock::now();
    Run();
    auto endTime = std::chrono::steady_clock::now();

    //毫秒级
    auto duration_second = std::chrono::duration_cast<std::chrono::milliseconds>(endTime - startTime);
    std::cout<< duration_second.count() << " ms" << std::endl;
}

void timeConsumedInMicro(){
    auto startTime = std::chrono::steady_clock::now();
    Run();
    auto endTime = std::chrono::steady_clock::now();

    //微秒级
    double duration_second = std::chrono::duration<double, std::micro>(endTime - startTime).count();
    std::cout<< duration_second << " us" << std::endl;
}

void timeConsumedInNano(){
    auto startTime = std::chrono::steady_clock::now();
    Run();
    auto endTime = std::chrono::steady_clock::now();

    //纳秒级
    auto duration_second = std::chrono::duration_cast<std::chrono::nanoseconds>(endTime - startTime);
    std::cout<< duration_second.count() << " ns" << std::endl;}

int main(int argc, char** argv){
    timeConsumed1();
    timeConsumed2();
    timeConsumedInMilli();
    timeConsumedInMicro();
    timeConsumedInNano();

    return 0;
}
struct timespec ts_begin, ts_end;

clock_gettime(CLOCK_REALTIME, &ts_begin);
// timespec_get(&ts_begin, TIME_UTC);
std::chrono::high_resolution_clock::time_point beginTime = std::chrono::high_resolution_clock::now();
clock_t start = clock();

/** 引擎进行推理 **/
infer->forward();

clock_t end = clock();
std::chrono::high_resolution_clock::time_point endTime = std::chrono::high_resolution_clock::now();
clock_gettime(CLOCK_REALTIME, &ts_end);
// timespec_get(&ts_end, TIME_UTC);

double spend_time = (double)(end - start)/CLOCKS_PER_SEC*1000;
std::cout << "############## Total inference time 1 is " << spend_time << "ms" << std::endl;

std::chrono::milliseconds timeInterval = std::chrono::duration_cast<std::chrono::milliseconds>(endTime - beginTime);
std::cout << "############## Total inference time 2 is " << timeInterval.count() << "ms" << std::endl;

double spend3 = (double)(ts_end.tv_nsec - ts_begin.tv_nsec)/1e6;
std::cout << "############## Total inference time 3 is " << spend3 << "ms" << std::endl;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值