压缩大词典

时间:2014-04-28 09:36:09

标签: c# memory dictionary huffman-code

我试图优化特定服务的内存使用情况,并偶然发现了一个巨大的字典缓存,它会经常查询随机条目。问题是这个字典占用超过1 GB,服务几乎触及2GB(32位)。曾经构建的字典永远不会改变。

字典键和值是字符串。有没有办法压缩整个字典,它仍然被索引?我写了一个小POC,它在所有条目之间使用霍夫曼编码共享代码,并在压缩密钥上编制索引。但我想知道是否有更好的选择。

由于种种原因,我必须排除这些选项 - 使用数据库或外部存储,因为它变得非常慢& - 所有条目在几分钟内至少使用一次,所以我也排除了延迟加载。 - 使用分布式缓存

1 个答案:

答案 0 :(得分:0)

我会将缓存移动到另一个进程。更好的是,我会使用带有MemoryCache(http://msdn.microsoft.com/en-us/library/system.runtime.caching.memorycache(v=vs.110).aspx)的IIS服务并查询服务。我知道会有开销,但吞吐量应该足够好。