【发布时间】:2009-03-25 17:18:29
【问题描述】:
我有大量按字母顺序排序的字符串(最多 1M)。我已经使用 HashSet、SortedDictionary 和 Dictionary 对这个集合进行了 LINQ 查询试验。我正在静态缓存集合,它的大小高达 50MB,并且我总是针对缓存的集合调用 LINQ 查询。我的问题如下:
无论集合类型如何,性能都比 SQL 差很多(最多 200 毫秒)。对底层 SQL 表执行类似查询时,性能要快得多(5-10 毫秒)。我已按如下方式实现了我的 LINQ 查询:
public static string ReturnSomething(string query, int limit)
{
StringBuilder sb = new StringBuilder();
foreach (var stringitem in MyCollection.Where(
x => x.StartsWith(query) && x.Length > q.Length).Take(limit))
{
sb.Append(stringitem);
}
return sb.ToString();
}
据我了解,HashSet、Dictionary 等使用二叉树搜索而不是标准枚举来实现查找。对于高级集合类型的高性能 LINQ 查询,我有哪些选择?
【问题讨论】:
标签: c# .net linq performance