如果只需要读取一次,则在查找后从C#Dictionary中删除项目的任何性能优势

reg*_*617 6 c# lookup performance dictionary

我有一个以字符串为键的对象字典.此词典首先填充了50到数万个条目.稍后我的程序在这个字典中查找值,并且在字典中找到一个项目后,我不再需要保留我刚才在字典中找到的对象.我的问题是,如果我不再使用字典中的条目,可能会减少内存使用量或者只是稍微加快后续查找,或者花费额外的时间,我是否能够获得更好的总执行时间?删除项目会更有影响力吗?

我理解这个问题的答案可能取决于某些细节,例如对字典进行了多少次查找,密钥的大小以及对象的大小,我将尝试在下面提供这些,但是是否有一般答案这个?是否有必要以这种方式尝试提高性能,或者是否存在这样的好主意?

键是可变长度字符串,可以是6个字符或~20个字符.总查找完全在空中,我可能只需要检查50x左右,或者我可能必须完全独立于字典的大小看10K次,即字典可能有50个项目,我可能会进行10K查找,或者我可能有10K项目,只能进行50次查找.

另外一个注意事项是,如果我从字典中删除项目并且我留下了一个空字典,那么我可以发信号给等待的线程,在我处理其余项目时不再等待我(包括解析长文本文件)同时查找字典中的项目以确定如何处理已解析的数据).

Jon*_*jan 1

字典查找本质上是 O(1)。从字典中删除项目将对查找速度产生微小(如果有的话)影响。

最后,移除物品很可能会比直接将它们留在里面慢。

我建议删除项目的唯一原因是您需要减少内存占用。