C++ boost::计时可读持续时间

C++ boost::计时可读持续时间,c++,boost,C++,Boost,我一直在使用boost chrono开发一个探查器,它可以在微秒内对函数进行计时,对于小函数效果很好,但对于较大的函数,我倾向于获得非常高的数值 想象一下下面的场景 boost::chrono::duration<long long, boost::micro> us1(300); boost::chrono::duration<long long, boost::micro> us2(200000); std::cout << boost::chrono:

我一直在使用boost chrono开发一个探查器,它可以在微秒内对函数进行计时,对于小函数效果很好,但对于较大的函数,我倾向于获得非常高的数值

想象一下下面的场景

boost::chrono::duration<long long, boost::micro> us1(300);
boost::chrono::duration<long long, boost::micro> us2(200000);

std::cout << boost::chrono::duration_short << "us1: " << us1 << ", us2: " << us2;
boost::chrono::duration us1(300);
boost::chrono::duration us2(200000);

std::cout多亏了大家,我这样解决了这个问题:

const std::string readableDuration(const boost::chrono::duration<long long, boost::micro>& duration)
{
    std::stringstream stream;
    int digits = calcNumDigits(duration.count());

    stream << boost::chrono::duration_short;

    if (digits <= 3) {
        stream << duration;
    } else if ((digits > 3) && (digits <= 6)) {
        stream << boost::chrono::duration_cast<boost::chrono::milliseconds>(duration);
    } else if ((digits > 6) && (digits <= 9)) {
        stream << boost::chrono::duration_cast<boost::chrono::seconds>(duration);
    } else if (digits > 9)
    {
        stream << boost::chrono::duration_cast<boost::chrono::minutes>(duration);
    }

    return stream.str();
}
const std::string readableDuration(const boost::chrono::duration&duration)
{
std::stringstream;
int digits=calcNumDigits(duration.count());
流动