【发布时间】:2010-12-04 02:39:27
【问题描述】:
我正在尝试优化一段 .NET 2.0 C# 代码,如下所示:
Dictionary<myType, string> myDictionary = new Dictionary<myType, string>();
// some other stuff
// inside a loop check if key is there and if not add element
if(!myDictionary.ContainsKey(currentKey))
{
myDictionary.Add(currentKey, "");
}
看起来字典已经被编写这段代码的人使用了,即使不需要(只有键被用于存储唯一值列表),因为它比用于搜索的 myType 对象列表更快。 仅作为字典的键,这似乎显然是错误的,但我试图了解修复它的最佳方法是什么。
问题:
1) 我似乎明白,即使只使用 .NET 3.5 HashSet,我也会获得良好的性能提升。这是正确的吗?
2) 在 .NET 2.0 中优化上述代码的最佳方法是什么?为什么?
编辑: 这是我正在尝试优化的现有代码,它正在循环数以万计的项目,并且每个项目都在调用 ContainsKey。必须有更好的方法(即使在 .NET 2.0 中)! :)
【问题讨论】:
-
您应该进一步完善您的编辑。你为什么要遍历成千上万的项目?你能并行化它吗?
-
我正在从一堆文件中获取可能存在欺骗的对象列表 - 然后遍历这些项目并将它们添加到字典中丢弃欺骗
标签: c# .net performance generics dictionary