我有一個對象的集合,我想檢索所有具有其中一個屬性匹配搜索字符串的對象。到目前爲止,我已經嘗試了幾種過濾方法,即List.ForAll,IEnumerable.Where和ParallelQuery.Where。最快的方法來過濾集合C#
List<Foo> cache = GetAllObjs(); // source list containing lots of objects
選項1:
List<Foo> foos = cache.AsParallel().Where(x => x.Name == "bar").ToList();
選項2:
List<Foo> foos = cache.Where(x => x.Name == "bar").ToList();
選項3:
List<Foo> foos = cache.FindAll(x => x.Name == "bar");
由於ParallelQuery.Where利用多個內核,它似乎是最快的方案。除此之外,是否還有其他方法進行過濾,例如使用不同的集合類型或過濾功能?源集合不一定是List。
[比賽馬](http://ericlippert.com/2012/12/17/performance-rant/)...它可能取決於陣列的大小和其他因素 – Sayse
我沒有比賽的馬匹。 ..我反正可以想到的三個。我想知道是否有不同的馬匹,我可以比賽... – painiyff
很難說最好的選擇(給定的)是,就像我說的,對於較小的陣列/列表,旋轉時間並行線程在執行時間方面可能不會帶來任何好處。對'ToList'的調用可能不是必需的,或者 – Sayse