我正在生成数以亿计的
效率方面,这样做更好吗?
try { Dict.Add(key, val); } catch (ArgumentException) {} //blind attempt
还是这个?
if (!Dict.ContainsKey(key)) { Dict.Add(key, val); } //smart attempt
盲目尝试触发双键异常;聪明的尝试点击字典索引两次 - 一次检查,然后再次添加。 (在我的特殊情况下,大约有 10% 的时间有重复 key 。)
有谁知道是否应该优先使用一种方法而不是另一种方法?
最佳答案
一般异常 are costly :
When a member throws an exception, its performance can be orders of magnitude slower.
也就是说,正如安德鲁·巴伯 (Andrew Barber) 指出的那样,这取决于“无数”是什么以及您预计碰撞发生的频率。
虽然您必须衡量自己的表现才能确定,但我个人可能会去检查等待异常,特别是如果您实际上没有做任何事情来处理异常,正打算吞下它。
关于c# - 有效地添加到 C# .NET 字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18304508/