我正在开发一个需要非常快速地进行日期数学运算的库。我正在使用Jon Skeet的Noda Time库,它使用Tick数学,所以非常快,但我希望以比将Noda Time Instant或Duration推送到TimeSpan更快的方式获得经过的秒数。
到目前为止我能够做到的最快的方法是使用Ticks * 1E-07,但我认为位移可能会更快(因为它总是1E-07)。提前感谢任何想法!
答案 0 :(得分:3)
不要转发TimeSpan
- 只需Ticks
并除以NodaConstants.TicksPerSecond
。它是一个整数除法,可能非常非常快。鉴于10 7 不是2的幂(或者特别整齐地表示为它们的组合),我怀疑你最好只是分开。
如果这个部门真的被证明是你代码中的瓶颈,我会感到惊讶。虽然我想尽快保持Noda Time,但我不会在适当的时候执行一个或两个部门:)
如果你需要部分秒,我会想要除以TicksPerMillisecond
,而是使用整数毫秒,而不是使用浮点运算。如果你在其他地方已经需要一个double
,那当然不会有太多帮助。