13
A
回答
9
我會選擇LINQ有兩個原因。
- LINQ查詢通常更短,更易於閱讀。
- 如果您確實擁有大量元素,Linq還可以通過使用PLinq爲您提供scale out to multiple CPU cores的能力,這可能會顯着幫助您。
如果考慮到OrderBy子句中的lambda表達式編譯爲一個函數,那麼我認爲單線程實現的性能大致相似 - 這實際上是通過實現IComparer得到的。這就是說,通過改變排序算法以適應數據已經排序的方式,而不是通過改變比較方法,你可能會獲得更多的性能提升。但是,我願意今天早上打賭我的咖啡,OrderBy在你的Linq語句中使用了Quicksort的實現,所以它在一般情況下可能相當不錯。
4
我更喜歡在所有基於集合的操作中使用LINQ。這裏的優點是我不必過多地使用集合的類型(OrderBy在IEnumerable上工作)。
如果您有IList<T>
無論如何,那麼List.Sort可能會更快。
無論如何,我不會擔心之前有一個成熟的(即測得的)性能問題
2
我認爲語義上兩者有很大的不同,IComparer的界面允許您定義如何你的類型自然排序,排序依據爲您提供了一種通過某些特定鍵排序對象的方法,例如給定Person對象列表,對於查詢A按名字對列表進行排序,對於查詢B按Age排序列表。
LINQ爲您提供了更大的靈活性,但是因爲OrderBy需要一個Func,它接受您的對象類型並返回一個用於排序的鍵,無論您返回哪個鍵仍需要實現IComparer接口。
就性能而言,根據您在比較方法中所做的操作,我認爲這兩種方法之間可能差別很小,儘管最好僅針對您的類型進行測試。
相關問題
- 1. 與組MySQL查詢通過與秩序
- 2. 組通過與最大和秩序
- 3. IComparer,OrderBy和Linq
- 4. 學說秩序通過PHP函數
- 5. 使用Linq和IComparer排序ObservableCollection
- 6. Mysql的組通過與秩序的衝突記錄由
- 7. SQL與LINQ與案例..當在秩序按
- 8. 秩序的IList與參數
- 9. Linq與組通過計數
- 10. Mongoid:通過現場秩序,並跳過N個記錄
- 11. 秩序
- 12. 導軌 - 通過評論的秩序視頻計數
- 13. 秩序sap.m.NavContainer
- 14. 秩序枚舉
- 15. 秩序ocamlbuild
- 16. 秩序的delayed_job
- 17. 秩序惡性
- 18. 秩序的Makefile
- 19. 秩序的getopt
- 20. WP_Query奇怪的行爲與秩序ASC
- 21. MySQL查詢與秩序和限制
- 22. 秩序投影儀\暫停與tikz
- 23. 通過LINQ
- 24. 通過LINQ
- 25. 通過LINQ的
- 26. 通過LINQ
- 27. 如何通過一些領域與LINQ
- 28. 集團通過與單一的LINQ
- 29. 過濾與LINQ
- 30. 秩序Python字典
thx all for answers。 – senzacionale 2010-07-31 17:01:52