std::chrono 的问题:重置时间

Problems with std::chrono : Reset a time

本文关键字:时间 chrono std 问题      更新时间:2023-10-16

你好,我对 std::chrono 有问题,我插入了包含。我尝试使用函数将时间重置为零 开始.

我的功能变成.cpp

void MyTimer::Start(){ std::chrono::duration::zero;}

my.hh 有一个单例和我的函数

public :
static MyTime& GetInstance;
private:
static MyTime t_getinstance;
MyTime& operator = 'const MyTime&){}
MyTime (const MyTime&){}
void Start();

我需要包含另一个库才能使用时间吗?如果我想重置我的时间,std:chrono:duration::zero是个好主意吗?因为我不太了解这个库。

std::chrono不是计时器;不能将其设置为零。该函数zero()仅返回0。要获取经过的时间,请先获取当前时间,然后执行您需要执行的任何操作,然后再次获取当前时间。从结束时间中减去开始时间。这里有一个例子。

将时间重置回大爆炸? 不。

工作只是计算两个时间点之间的差异。简单的想法从now((开始。

#include <chrono>
// 'compressed' chrono access --------------vvvvvvv
typedef std::chrono::high_resolution_clock  HRClk_t; 
typedef HRClk_t::time_point                 Time_t;  
typedef std::chrono::milliseconds           MS_t;    
typedef std::chrono::microseconds           US_t;    
typedef std::chrono::nanoseconds            NS_t;    
using   namespace std::chrono_literals; // suffixes: 100ms, 2s, 30us

并用于持续时间测量,如下所示:

int main(int argc, char* argv[])
{
Time_t start_us = HRClk_t::now();  // time point 1
int retVal = 0;
{
T514_t   test514;
retVal = test514.exec();  // do interesting stuff
}
auto  duration_us =  
std::chrono::duration_cast<US_t>(HRClk_t::now() - start_us);
// time points ------------------  -------2------- - ----1---
// after cast for duration extract------vvvvvvv 
std::cout << "  FINI   " << duration_us.count() << " us" << std::endl;
return(static_cast<int>(errStr.size()));
}