读取纳秒值的数据类型是什么?

what is the data type for reading a nano second value?

本文关键字:数据类型 是什么 读取      更新时间:2023-10-16

我正在读取一个纳秒值,并希望将其存储在一个特定的变量中,这样我就不会丢失数据。有人能告诉我数据类型是什么吗?

示例:

struct timespec ts;
getrawmonotonic(&ts);
end_time = timespec_to_ns(&ts);
end_time的数据类型是什么?

在c++中,这将是std::chrono::nanoseconds。例如,要查找执行某些代码所花费的时间长度,您可以这样写:

auto start = std::chrono::system_clock.now();
//do some things
//...
auto end = std::chrono::system_clock.now();
std::chrono::nanoseconds nanoseconds_taken =
    duration_cast<std::chrono::nanoseconds>(end - start);
std::cout << "Took: " << nanoseconds_taken.count() << " nanosecondsn";

timespec_to_ns的定义如下:

/**
 * timespec_to_ns - Convert timespec to nanoseconds
 * @ts:         pointer to the timespec variable to be converted
 *
 * Returns the scalar nanosecond representation of the timespec
 * parameter.
 */
static inline s64 timespec_to_ns(const struct timespec *ts)
{
        return ((s64) ts->tv_sec * NSEC_PER_SEC) + ts->tv_nsec;
}

所以你应该把它存储在64位整数中

这取决于timespec_to_ns的确切规格。

对于linux,类型为s64。在您自己的系统中,您应该能够通过查看声明timespec_to_ns的头文件来确定类型。

在一般情况下(仅针对c++),您可以使用auto自动推断正确的返回类型:

struct timespec ts;
auto end_time = timespec_to_ns(&ts);
//Convert to milliseconds:
auto millis = end_time/1000000.