在 Linux 中获取时间戳的"最便宜"方式 (c++)

'Cheapest' way of getting time stamp in Linux (c++)

本文关键字:最便宜 方式 c++ Linux 获取 时间戳      更新时间:2023-10-16

我想知道在Linux(c++)中获取时间戳的最便宜的方法是什么
我认为这是一种准确性交易,所以我相信有不止一种可能性
我需要毫秒,但不一定是microseconds,所以std::localtime不是一个选项,gettimeofday可能太贵了。(由于微秒精度)。

1:fprintf(stdout, "%un", (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 Epochn";

4:

using namespace std::chrono;
milliseconds ms = duration_cast< milliseconds >(
    high_resolution_clock::now().time_since_epoch()
);`

我建议使用ctime库和以下代码:

 std::time_t timestamp = std::time(nullptr);
    std::cout << std::asctime(std::localtime(&result))
              << result << " seconds since the Epochn";

这将在"结果"变量中返回自大纪元以来的秒数(相当直接)。有一些方法可以将其转换为可读格式,但正如您所说,这是昂贵的。获取该数字将非常有效,因为它只从系统中读取变量,而不是转换/连接和计算可读日期。