C++ 在C++;std,如何在运行时选择计时的持续时间
我一直在寻找这个问题,但没有找到确切问题的解决方案 简而言之,有没有一种方法可以通过计算定义std::chronos变量的持续时间?以下面的代码为例:C++ 在C++;std,如何在运行时选择计时的持续时间,c++,std,duration,chrono,C++,Std,Duration,Chrono,我一直在寻找这个问题,但没有找到确切问题的解决方案 简而言之,有没有一种方法可以通过计算定义std::chronos变量的持续时间?以下面的代码为例: auto timed = std::chrono::duration_cast<std::chrono::microseconds>(t1-t0).count(); auto timed=std::chrono::duration_cast(t1-t0).count(); 我在一个定制的Timer类中使用它,该类测量某些函数的代码
auto timed = std::chrono::duration_cast<std::chrono::microseconds>(t1-t0).count();
auto timed=std::chrono::duration_cast(t1-t0).count();
我在一个定制的Timer
类中使用它,该类测量某些函数的代码执行时间。我试图做的是创建一个开关
,通过该开关,一个cam可以定义结果是否应存储为微秒
、毫秒
或秒
< C++ > < p>你可以做类似的事情(假设代码> SC< /COD>是代码> STD::如您所见,强制转换是一个模板参数(编译时参数):
您始终可以保存最高分辨率的结果,并在有人以较低分辨率要求时转换它
class Timer {
sc::time_point<sc::steady_clock> _start;
Timer() : _start(sc::steady_clock::now()) {
}
template <class Unit>
int getElapsed() {
return sc::duration_cast<Unit>(sc::steady_clock::now() - _start).count();
}
};
Timer t;
...
t.elapsed<sc::milliseconds>();
enum class UnitCount { ms, s };
int Timer::getElapsedInUnits(UnitCount c) {
switch (c) {
case UnitCount::ms:
return this->getElapsed<sc::milliseconds>();
case UnitCount::s
...
}
}