我正在读取纳秒值,并希望将其存储在特定变量中,这样我就不会丢失数据。有人能告诉我什么可能是数据类型?
示例:
struct timespec ts;
getrawmonotonic(&ts);
end_time = timespec_to_ns(&ts);
end_time的数据类型是什么?
答案 0 :(得分:3)
在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() << " nanoseconds\n";
答案 1 :(得分:0)
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位整数中。
答案 2 :(得分:0)
这实际上取决于timespec_to_ns
的确切规范。
For 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.