List<T>.Contains性能问题产生的背景:需要向List中Add 10万个值,Add前需要判断一下,不添加重复值,在做
if(List.Contains(item))
判断时,会消耗大量的时间,当数据量在1万以内时,还感觉不到性能问题;当数据量到5万时,就无法忍受了。随着数据量增加,查找的时间就会越长。
于是可以改用Dictionary<string, string>,再做相同的判断
if(Dictionary.ContainsKey(key))
这个时候添加10万条记录几乎没花时间。
最后用方法List.AddRange(Dictionary.Values)将值加到List里就行了。