描述
最近的项目代码里有一个小需求,我需要别人输入给我一个SLAM位置(或者随便什么位置),但是他的频率并不能满足我的计算需求。
因此我需要在他不给我发信息时,我的线程仍在按照真实时间更新。
使用chrono库
代码
#include <string>
#include <chrono>
#include <iostream>
double getTimeNow()
{
std::chrono::system_clock::time_point current_time = std::chrono::system_clock::now();
std::chrono::seconds sec = std::chrono::duration_cast<std::chrono::seconds>(current_time.time_since_epoch());
std::chrono::nanoseconds nsec = std::chrono::duration_cast<std::chrono::nanoseconds>(current_time.time_since_epoch());
// std::cout<<"now (s):"<<sec.count()<<std::endl;
// std::cout<<"now (ns):"<<nsec.count()<<std::endl;
return nsec.count()*10e-10;
}
int main()
{
double time_1 = getTimeNow();
double time_2 = getTimeNow();
std::cout<<"has pass: "<<time_2 - time_1<<" s"<<std::endl;
return 1;
}
返回的时间是以秒为单位的。
补充
补充一种新的方法来计算时间
#include <time.h>
clock_t t_begin = clock();
int x = 0;
x++;
clock_t t_end = clock();
double t = (t_end - t_begin )/ CLOCKS_PER_SEC; // (second, s)
std::cout<<"spend: "<<t<<" s"<<std::endl;