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. 的has_many通過與秩序不工作
- 4. IComparer,OrderBy和Linq
- 5. LINQ的:SELECT DISTINCT和秩序
- 6. 與秩序
- 7. 使用Linq和IComparer排序ObservableCollection
- 8. 學說秩序通過PHP函數
- 9. 秩序的NSMutableArray通過計算距離
- 10. 獲取與秩序
- 11. Mysql的組通過與秩序的衝突記錄由
- 12. 與秩序親子SQL查詢通過,並限制
- 13. SQL與LINQ與案例..當在秩序按
- 14. LINQ聯盟 - 字符串保持秩序
- 15. LINQ的組通過與順序通過創建日期
- 16. 秩序的IList與參數
- 17. 的ActiveRecord包括與秩序
- 18. Linq與組通過計數
- 19. Mongoid:通過現場秩序,並跳過N個記錄
- 20. LINQ順序通過「循環」
- 21. 秩序
- 22. Linq中的自定義Icomparer到對象
- 23. 排序與特定的價值秩序
- 24. 與不同秩
- 25. 嵌套ORDER BY/ORDER BY秩序中通過SQL
- 26. 導軌 - 通過評論的秩序視頻計數
- 27. 秩序枚舉
- 28. 破壞秩序
- 29. 秩序惡性
- 30. 秩序的settings.xml
thx all for answers。 – senzacionale 2010-07-31 17:01:52