我正在开发一个需要非常快速地进行日期数学运算的库。我正在使用 Jon Skeet 的 Noda Time 库,它使用 Tick 数学,因此非常快,但我希望以比将 Noda Time Instant 或 Duration 转换为 TimeSpan 更快的方式获得经过的秒数。
到目前为止,我能够做到的最快方法是使用 Ticks * 1E-07,但我认为位移可能会更快(因为它始终是 1E-07)。提前感谢您的任何想法!
我正在开发一个需要非常快速地进行日期数学运算的库。我正在使用 Jon Skeet 的 Noda Time 库,它使用 Tick 数学,因此非常快,但我希望以比将 Noda Time Instant 或 Duration 转换为 TimeSpan 更快的方式获得经过的秒数。
到目前为止,我能够做到的最快方法是使用 Ticks * 1E-07,但我认为位移可能会更快(因为它始终是 1E-07)。提前感谢您的任何想法!
不要投射到TimeSpan
- 只需将Ticks
和除以NodaConstants.TicksPerSecond
。这是一个整数除法,并且可能非常非常快。鉴于 10 7不是 2 的幂(或者特别简洁地表示为它们的组合),我怀疑你最好只除。
如果这个部门真的被证明是您代码中的瓶颈,我会感到惊讶。虽然我试图让 Noda Time 保持快速,但我并没有在适当的情况下执行一两个分区:)
如果您需要部分秒,我很想只除以TicksPerMillisecond
,并使用整数毫秒而不是使用浮点运算。当然,如果您已经需要double
其他地方,那将无济于事。