gpt4 book ai didi

c++ - boost::chrono 可读持续时间

转载 作者:行者123 更新时间:2023-11-30 02:51:38 25 4
gpt4 key购买 nike

我一直在研究一个分析器,它使用 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;

输出看起来像这样

us1: 300 us , us2: 200000 us

这可能变得难以量化,所以我想知道是否有一种方法可以四舍五入到更高的单位,以便输出看起来像

us1: 300 us , us2: 200 ms

最佳答案

感谢大家,我是这样解决的:

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();
}

可能值得将流设为静态,但您已经了解了总体思路

关于c++ - boost::chrono 可读持续时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19586693/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com