我想知道在Linux中获取时间戳的最便宜方式是什么(用c ++编写)
我认为这是一个准确的交易 - 所以我相信有超过1种可能性
我需要有几毫秒但不一定是microseconds
,因此std::localtime
不是一个选项而且gettimeofday
可能太昂贵了。 (由于微秒精度)。
答案 0 :(得分:1)
1:fprintf(stdout, "%u\n", (unsigned)time(NULL));
2:struct timeval tv;
gettimeofday(&tv,NULL);
tv.tv_sec // seconds
tv.tv_usec // microseconds
3:std::time_t result = std::time(nullptr);
std::cout << std::asctime(std::localtime(&result))
<< result << " seconds since the Epoch\n";
4:
using namespace std::chrono;
milliseconds ms = duration_cast< milliseconds >(
high_resolution_clock::now().time_since_epoch()
);`
答案 1 :(得分:0)
我建议使用ctime库和以下代码:
std::time_t timestamp = std::time(nullptr);
std::cout << std::asctime(std::localtime(&result))
<< result << " seconds since the Epoch\n";
这将返回&#34;结果&#34;变量自大纪元以来的秒数(相当直接)。有办法将其转换为可读格式,但正如您所说,这是昂贵的。获得该数字将非常有效,因为它只从系统中读取变量,而不是转换/连接和计算可读日期。