我在我的代碼(C#/ WPF)中對性能非常敏感的部分,我需要以儘可能快的方式在兩個System.TimeSpan值之間執行模運算。如何使用System.TimeSpan值實現模數運算,無需循環?
這段代碼將每秒運行數千次,我非常希望避免使用手動循環計算 - 不惜一切代價。
2周的時間跨度之間的模數的想法似乎有點怪異,所以讓我來解釋 -
說我們有
時間跨度A = 1分30秒
時間跨度B = 20秒
這裏將是常見的操作和它們的合理結果的列表:
A + B =(時間跨度)1分50秒
A - B =(時間跨度)1分10秒
A * B =沒有合理的計算方法
我們應該可以用乘以TimeSpan整數。 A * 5 =(TimeSpan)7分鐘30秒
Microsoft尚未在TimeSpans和整數之間實現乘法。
A/B =(int)4或(double)4.5
此操作不是直接在.NET框架中實現的,但它非常有意義。
有在A. 4.5 B的(4.5 * 20 = 90)
A%B =(時間跨度)10秒
鑑於合理時間跨度劃分,時間跨度模量應該是相當直接的。
A/B 確實等於(int)4 餘數(TimeSpan)10秒。商和餘數是不同的數據類型,這可能實際上是微軟沒有直接實現這一點的原因。
我需要找到一種有效的方法來計算這個沒有循環。通常我不會反對短循環,但是這些TimeSpans可能會有很大的不同。 TimeSpans之間的指數差越大,商數越大。商數越大,「分環」必須執行的迭代越多。這是我在我的應用程序的這部分中不允許的依賴項。
這樣做有什麼想法嗎?
答案非常簡單。我覺得自己很笨,哈哈。謝謝! – Giffyguy 2009-08-18 18:55:16
一旦你有答案,一切看起來很簡單。 – 2009-08-18 19:42:28