1

私は、日付計算を非常に迅速に行う必要があるライブラリに取り組んでいます。ティック数学を使用するJon SkeetのNoda Timeライブラリを使用しているため、非常に高速ですが、Noda Time InstantまたはDurationをTimeSpanにキャストするよりも速く経過秒数を取得したいと考えています.

私がこれまでに実行できた最速の方法は、Ticks * 1E-07 を使用することですが、ビットシフトの方が高速に動作する可能性があると考えています (常に 1E-07 になるため)。ご意見をお寄せいただきありがとうございます。

4

1 に答える 1

3

にキャストしないでくださいTimeSpan- を取り、Ticksで割るだけNodaConstants.TicksPerSecondです。これは整数除算であり、おそらく非常に高速です。10 7が 2 の累乗ではない (またはそれらの組み合わせとして特にきちんと表現されている) ことを考えると、単に割り算するのが最善だと思います。

この分割が実際にコードのボトルネックであることが判明した場合、私は驚かれることでしょう。私は野田タイムを速く保つように努めていますが、必要に応じて1つまたは2つの部門を実行することを超えていません:)

部分的な秒が必要な場合は、TicksPerMillisecond代わりに除算し、浮動小数点演算を使用するのではなく、整数のミリ秒を使用したいと思います。もちろん、すでに他の場所で が必要な場合はdouble、あまり役に立ちません。

于 2013-05-08T16:20:55.413 に答える