我米用工會在兩個大名單(超過100萬個)和IT方面很慢(幾分鐘)的快速工會 我需要的功能來刪除重複,所以我不能使用CONCAT和我的名單沒有排序。 有更快的方法嗎?也許使用plinq
?兩個大名單
Q
兩個大名單
0
A
回答
3
你是不是說什麼都在列表中的項目,但一個選項是使用正確的數據結構,這個任務 - 要只保留獨特的項目 - 這是SET的定義,所以使用HashSet的。
var hashSet = new HashSet<int>(list1);
hashSet.UnionWith(list2);
另外我測量時間碼以上VS Linq.Union:
var list3 = list1.Union(list2).Distinct();
,這裏是定時(HashSet.UnionWith作品幾乎快一倍):
HashSet.UnionWith
real 0m4.111s
user 0m3.890s
sys 0m0.132s
real 0m4.562s
user 0m4.074s
sys 0m0.170s
real 0m4.052s
user 0m3.851s
sys 0m0.129s
real 0m4.003s
user 0m3.814s
sys 0m0.125s
real 0m4.058s
user 0m3.858s
sys 0m0.126s
Linq.Union.Distinct
real 0m7.579s
user 0m7.014s
sys 0m0.428s
real 0m7.498s
user 0m6.965s
sys 0m0.419s
real 0m7.596s
user 0m6.994s
sys 0m0.412s
real 0m7.446s
user 0m6.917s
sys 0m0.416s
real 0m7.452s
user 0m6.928s
sys 0m0.403s
相關問題
- 1. 比較兩個大的通用名單
- 2. 兩個名單左起第
- 3. 得到兩個date.time名單
- 4. 單證兩個別名
- 5. 名單有兩個elemnts
- 6. 在一個大名單
- 7. 如何比較兩個在C#高效分選大名單?
- 8. 從人類的單個大名單
- 9. 兩個大單詞列表的交集
- 10. 表單輸入名稱,兩個值
- 11. zsh中的兩個單詞別名
- 12. 在斯卡拉比較兩個名單
- 13. STL set_union大名單
- 14. 在兩個大名單和版本列表中檢查版本更新
- 15. 將兩個單詞中的第一個字母大寫爲兩個字符串
- 16. JDOM2 - 兩個命名
- 17. Zend_Controller_Router_Route_Hostname兩個域名
- 18. 操縱在Python大名單
- 19. 使用hamcrest在兩個單獨的名單與自己匹配
- 20. 兩個單域
- 21. 從OpenFire名單中刪除用戶會導致兩個名單受影響
- 22. 從其他兩個表(黑名單和白名單查詢)(源碼)
- 23. 更新查詢兩個巨大的表之間的單個列
- 24. 將多個單詞分爲兩個,長度大致相等
- 25. 使用Apache爲單個域名和單個IP地址服務兩個網站
- 26. 打印一份清單的大名單
- 27. 如何將兩個不同的域名指向單個網站?
- 28. 檢查對象的名單有兩個項目同一個JavaScript
- 29. 點兩個域名到單個wordpress安裝
- 30. C#比較兩個ULONG名單和未受保護的一個
你需要向我們展示您的代碼。兩個100萬個物品清單應該能夠在<1秒內「聯合」。 – Rob
請注意,我的基準,其中:產生200萬隨機整數,工會和轉儲結果計數'0.083'秒運行一次。 – Rob
心理調試:您的列表包含未實現'Equals'或'GetHashCode',所以你得到一個默認(慢)通過使用反射的CLR提供的實現自定義的結構。有關實施建議,請參閱http://code.logos.com/blog/2010/02/creating_equatable_objects.html。 –