2014-04-28 47 views
2

我試圖優化特定服務的內存使用情況,並偶然發現了一個巨大的字典緩存,它經常被隨機輸入查詢。問題是這本詞典佔用了超過1 GB的空間,並且該服務幾乎觸及2GB(32位)。曾經構建過的字典從不改變。壓縮大型字典

字典鍵和值是字符串。有沒有辦法壓縮整個字典,它仍然是索引?我寫了一個小的POC,它在所有條目之間使用霍夫曼編碼共享代碼,並在壓縮密鑰上進行索引。但我想知道是否有更好的選擇。

的我必須排除由於種種原因 選擇 - 因爲它變得非常緩慢使用數據庫或外部存儲& - 所有條目習慣ATLEAST一次在幾分鐘之內,所以也排除了懶加載。 - 使用分散緩存

+1

什麼樣的鑰匙?鑰匙是否在某種程度上相似?像「ABC」,「ABD」,「ABE」等?另外,從哪裏獲得的價值,它們可以重複嗎? –

+2

字符串重複多少?實習他們可能是一個快速的勝利。 –

+0

實習是一個永久的解決方案,但如果字典在進程運行時保持在內存中並且不會更改,但可以接受,但是一旦添加到實習表中,就無法刪除它。儘管如果字符串是從外部媒體生成/檢索的,並且有大量重複,您可以實施「軟實習」。 –

回答