Sorry, your browser cannot access this site
This page requires browser support (enable) JavaScript
Learn more >

microseconds, us

std::chrono::microseconds has_tag_delete_time = std::chrono::microseconds::zero();
auto d_t0 = std::chrono::steady_clock::now();
// do something
auto d_t1 = std::chrono::steady_clock::now();
has_tag_delete_time += std::chrono::duration_cast<std::chrono::microseconds>(d_t1-d_t0);

long long t = has_tag_delete_time.count();

tools.h

#include <chrono>
#define TIME_MEASURE_SZ 5
template <typename UnitType> // std::chrono::nanoseconds, microseconds, milliseconds, seconds ...
class TimeMeasure
{
    std::chrono::_V2::system_clock::time_point start;
    int idx;

public:
    static int64_t time_measure[TIME_MEASURE_SZ];
    static const char *unit_str;
    TimeMeasure(int idx) : start(std::chrono::system_clock::now()), idx(idx) {}
    ~TimeMeasure()
    {
        auto end = std::chrono::system_clock::now();
        UnitType duration = std::chrono::duration_cast<UnitType>(end - start); // see here
        time_measure[idx] += duration.count();
    }
};

main.cpp

#include "tools.h"

template <typename UnitType>                                  
int64_t TimeMeasure<UnitType>::time_measure[TIME_MEASURE_SZ]; 
template <typename UnitType>                                  
const char *TimeMeasure<UnitType>::unit_str = "us"; 

#define TIME_UNIT std::chrono::microseconds
int main()
{
    TimeMeasure<TIME_UNIT>::time_measure[0]=0;
    {
        TimeMeasure<TIME_UNIT> ins(0);
        // do something, measure time take up with unit microseconds
    }
    std::cout<<TimeMeasure<TIME_UNIT>::time_measure[0]<<TimeMeasure<TIME_UNIT>::unit_str<<std::endl;

    return 0;
}

评论