使用位移移动小数位的方法

时间:2013-05-08 16:18:46

标签: nodatime

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

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

1 个答案:

答案 0 :(得分:3)

不要转发TimeSpan - 只需Ticks并除以NodaConstants.TicksPerSecond。它是一个整数除法,可能非常非常快。鉴于10 7 不是2的幂(或者特别整齐地表示为它们的组合),我怀疑你最好只是分开。

如果这个部门真的被证明是你代码中的瓶颈,我会感到惊讶。虽然我想尽快保持Noda Time,但我不会在适当的时候执行一个或两个部门:)

如果你需要部分秒,我会想要除以TicksPerMillisecond,而是使用整数毫秒,而不是使用浮点运算。如果你在其他地方已经需要一个double,那当然不会有太多帮助。