2016-05-10 67 views
-4

鑄造時,我有一個LINQ聲明,如下所示:罰款的LINQ性能做內部

products = products.OrderBy(p => Convert.ToDateTime(p.ExpirationDate)).ToList(); 

哪裏ExpirationDate是類型string代表產品的過期日期。無論如何,不​​是我的設計決定。

爲了完成排序,我需要將ExpirationDate的字符串表示形式轉換爲DateTime以便排序正常工作。

主要是我想知道是否有人知道在LINQ查詢中鑄造(通過Convert.ToDateTime)的性能影響?如果有的話?

+2

難道你不能簡單地測量它嗎?如果你甚至沒有嘗試過它是否足夠快,爲什麼要關心性能呢? –

+0

相比什麼? – juharr

+0

我認爲沒有問題,這是LINQ的意圖,鑄造,映射,轉換等,這就是爲什麼你使用lambdas。這真的取決於上下文和你期望完成操作有多快 –

回答

-1

雖然我不確定這個問題會是一個好的滿意答案,但我測量了使用linq將簡單包裝分類爲日期時間和字符串的性能。

Average Ticks Per Run 
DWrapper: 1078.5965 
SWrapper: 4060.6365 

因此,正如你所看到的,平均來說,使用演員的時間是沒有的時間的4倍。這就是說,沒有理由告訴任何人,這是比其他任何方式都要慢四倍,因爲我的包裝非常輕巧,而且這會對這裏看到的結果產生巨大影響,更不用說其他問題了。性能測量。

注:

  • 時間測量與System.Diagnostics.Stopwatch完成。
  • 測試運行在運行chrome,visual studio和其他大型應用程序的響亮機器上。
  • 測試是在兩個使用相同隨機日期構建的2,000個大小的列表上進行10,000次運行完成的。
  • DateTime對象的字符串表示是通過DateTime.ToLongDateString方法完成的。
  • 包裝類只有包含單個DateTime或字符串。
  • 以發佈模式編譯的測試代碼。