【发布时间】:2012-11-23 08:52:15
【问题描述】:
我有一个非常定期查询数据库的应用程序。它返回多达数百万个字符串,其中绝大多数是 bieng 重复。我需要将所有这些记录存储在内存中,并尝试将占用空间最小化。
我目前的设计是在每个字符串上调用 GetHashCode(),然后存储哈希而不是字符串本身。
然后我尝试将其添加到Dictionary<hashcode,string>() 结构中。我还保留了第二个 Dictionary<hashcode,count>() 字典,随着更多条目使用该字符串,它会递增\递减。
在条目处理方法中,我递减计数器,如果使用量降至零,则从字典中删除字符串。
所以,有几个问题:
这是愚蠢的差事吗?与与这个巨头合作相比,我可以使用哪些数据类型可以节省大量时间\精力?
我希望我的字符串表是线程安全的(目前不是)。使用 ConcurrentDictinary 是我的最佳选择吗?
提前致谢。
【问题讨论】:
标签: c# .net hash dictionary storage