【问题标题】:Purpose of the nanoseconds in database programming [closed]数据库编程中纳秒的目的[关闭]
【发布时间】:2013-07-07 12:31:04
【问题描述】:

刚看到这个问题:Nanoseconds lost coming from MongoDB ISODate Object

询问是因为,3GHz 处理器每纳秒最多可以执行 9 条指令(肯定不足以将任何内容存储到 mongodb 中),而且内存速度无论如何要慢十倍。我不确定网络时间同步有多精确。

想知道什么用途是有用的,并且通常在任何(标准)编程语言/系统中使用 纳秒 值。

【问题讨论】:

  • 因为使用纳秒可以让你go up to "11" ;)
  • 制作独特的时间戳非常方便。
  • 有些人认为精度越高就等于精度越高,效果越好。在标准计算中,纳秒精度是没有用的。对于许多常见的应用程序,即使是几秒钟也比需要的精度更高。
  • 分辨率和准确度是不同的概念。纳秒级分辨率可以有它的用途;系统时钟的纳秒精度并不是真正可以达到的,但并非所有时间都来自系统时钟。有时微秒级的分辨率是不够的。
  • 意义主要在于纳秒级的分辨率通常会保证给你每个请求一个唯一的值,因此时钟值可以用作标识符或用于确定事件的顺序。 (虽然一些只有微秒精度的时钟也通过在末端附加的额外位来保证唯一性。)

标签: time


【解决方案1】:

info ls 提到了--time-style=full-iso 选项,并带有以下描述:

List timestamps in full using ISO 8601 date, time, and time
zone format with nanosecond precision, e.g., `2002-03-30
23:45:56.477817180 -0700'.  This style is equivalent to
`+%Y-%m-%d %H:%M:%S.%N %z'.

This is useful because the time output includes all the
information that is available from the operating system.  For
example, this can help explain `make''s behavior, since GNU
`make' uses the full timestamp to determine whether a file is
out of date.

(您的里程可能会有所不同。)


编辑添加:另外,定义 UUID 的RFC 4122 提供了几种生成它们的算法,包括一些“基于时间”的算法。这些都需要100ns的分辨率。由于提供“十分之一微秒”字段没有意义,因此这需要“纳秒”字段,即使没有提供有意义的 1ns 分辨率。

(我不得不指出,在您链接到的问题中,提问者实际上只在 MongoDB 中存储了毫秒。问题询问“纳秒”只是因为那是存储亚秒的字段分辨率。)

【讨论】:

  • 很好的答案。我并不真正关心“搁置” - 这个问题不是基于意见的,但这里(正如你所展示的那样)是纳秒的真正需要(并且你给出了合乎逻辑的解释)。非常感谢。
猜你喜欢
  • 1970-01-01
  • 2021-05-15
  • 2014-08-22
  • 2013-07-03
  • 1970-01-01
  • 2011-05-17
  • 2015-07-23
  • 2015-02-27
  • 2012-03-20
相关资源
最近更新 更多