1

我正在开发一个需要非常快速地进行日期数学运算的库。我正在使用 Jon Skeet 的 Noda Time 库,它使用 Tick 数学,因此非常快,但我希望以比将 Noda Time Instant 或 Duration 转换为 TimeSpan 更快的方式获得经过的秒数。

到目前为止,我能够做到的最快方法是使用 Ticks * 1E-07,但我认为位移可能会更快(因为它始终是 1E-07)。提前感谢您的任何想法!

4

1 回答 1

3

不要投射到TimeSpan- 只需将Ticks和除以NodaConstants.TicksPerSecond。这是一个整数除法,并且可能非常非常快。鉴于 10 7不是 2 的幂(或者特别简洁地表示为它们的组合),我怀疑你最好只除。

如果这个部门真的被证明是您代码中的瓶颈,我会感到惊讶。虽然我试图让 Noda Time 保持快速,但我并没有在适当的情况下执行一两个分区:)

如果您需要部分秒,我很想只除以TicksPerMillisecond,并使用整数毫秒而不是使用浮点运算。当然,如果您已经需要double其他地方,那将无济于事。

于 2013-05-08T16:20:55.413 回答