【发布时间】:2019-10-21 14:01:26
【问题描述】:
我正在使用 Chrono 库进行时间测量。找到下面的代码,我就知道怎么用了。
class Timer {
private:
std::chrono::time_point<std::chrono::high_resolution_clock> pr_StartTime;
std::chrono::time_point<std::chrono::high_resolution_clock> pr_EndTime;
public:
Timer()
{
Start();
}
~Timer()
{
Finish();
}
void Start()
{
pr_StartTime = std::chrono::high_resolution_clock::now();
}
void Finish()
{
pr_EndTime = std::chrono::high_resolution_clock::now();
auto StartTimeMs = std::chrono::time_point_cast<std::chrono::microseconds>(pr_StartTime).time_since_epoch().count();
auto EndTimeMs = std::chrono::time_point_cast<std::chrono::microseconds>(pr_EndTime).time_since_epoch().count();
auto Duration = EndTimeMs - StartTimeMs;
std::cout << "Duration " << Duration << " microseconds." << std::endl;
}
};
但我没有意识到为什么开发人员在铸造步骤中使用 time_since_epoch().count()。为什么要使用 time_since_epoch() 和 count()?
【问题讨论】:
-
我不知道他们为什么打电话给
time_since_epoch。也许 Howard Hinnat 会有一个想法。 -
这似乎更像是一个常见的错误,人们尽快而不是尽可能晚地逃避 chrono 类型。 Chrono 类型提供减法,您不必自己跟踪所涉及的单位。然后代码使用
Ms表示“微秒”,使情况变得更糟。