2009-09-12 89 views
0

在我的應用程序中,我需要存儲和傳輸包含許多重複字符串值(認爲XML文檔中的實體名稱)的數據。我有兩個提出的解決方案:字符串表編碼與gzip壓縮

  • A)創建一個字符串表被沿原稿存儲,然後使用索引引用(文檔主體中使用多字節編碼),或
  • B)簡單地使用gzip或類似的壓縮算法壓縮文檔。

哪一個在速度和數據大小上可能會更好? (顯然,這取決於實現的質量,但假設選項A動態地生成一個字符串數組並以某種合理方式對文檔主體進行編碼)。

另外,如果選項B,您是否推薦使用gzip以外的更合適的壓縮方法?

回答

1

與CPU時間成本相比,傳輸/存儲成本不是太高時,gzip只是一個很好的算法。您可以使用bzip2,7zip和特殊的自然語言以及各種PPM算法獲得更好的壓縮比。當然,不僅計算(以及靜態與動態內存要求)與壓縮比有關 - 不同的壓縮格式允許不同程度的高效隨機訪問搜索,低延遲流解碼以及壓縮數據串聯(例如cat a.gz b.gz | gunzip -cgunzip -c a.gz;gunzip -c b.gz

相同
1

這將取決於你的文章中未涉及的很多事情。

爲什麼不先嚐試zip方法,因爲它很容易實現。然後,如果它符合您的速度/壓縮要求,則可以繼續下一個功能。

2

簡單地使用gzip肯定會是最簡單也可能足夠的。我建議嘗試字符串表,然後gzip,看看你是否比gzip更好的壓縮。