我有一个Dictionary<string,int>
可能包含超过 10+ 百万个唯一键的潜力。我试图减少这需要的内存量,同时仍然保持字典的功能。
我有将字符串的哈希存储为 long 的想法,这会将应用程序的内存使用量降低到可接受的量(~1.5 gig 到 ~.5 gig),但我对我的方法感觉不太好这。
long longKey=
BitConverter.ToInt64(cryptoTransformSHA1.ComputeHash(enc.GetBytes(strKey)), 0);
基本上,这会切断 SHA1 哈希的末尾,并将其第一块放入一个 long 中,然后我将其用作密钥。虽然这可行,但至少对于我正在测试的数据而言,我不觉得这是一个非常可靠的解决方案,因为键冲突的可能性增加了。
有没有其他方法可以减少字典的内存占用,或者我上面的方法没有我想象的那么可怕?
[编辑]为了澄清,我需要保持使用字符串查找字典中包含的值的能力。将实际字符串存储在字典中会占用大量内存。我想做的是使用Dictionary<long,int>
long 是字符串上散列函数的结果。