作者y3k ( )
看板EZsoft
標題Re: [請問] 結實壓縮檔 我真是搞不懂你阿
時間Mon Nov 14 19:04:19 2011
結石壓縮檔的意思 和你想的不太一樣喔
我把我個人粗淺的認知大略的講解一下 我想你會比較清楚
今天我們有三個mp3要做壓縮打包
a.mp3
b.mp3
c.mp3
用一般的壓縮方式壓出來的檔案可能是這樣子
<r39q34t0ogwh9gweqglm F9RY890Q98O5QWYTJ4QOIJA TRGHEHAIOEAWIAODRS>
中間的壓縮原理和演算我省略不講
你會發現為了讓電腦能夠更快速的辨識壓縮完的檔案各自在哪裡
用了三個空格(當然實際不會簡單到這麼無腦)來分隔他們
這樣的話 如果進行3個檔案 會有(3-1)*n個浪費掉的空格
那如果20000個檔案的話 就會浪費掉(20000-1)*n個空格
這種狀況下影響是很可觀的 而結實壓縮檔就是把那些空格捨去
用更簡短或根本省略的方式做表達 有效率地降低壓縮檔的大小
至於本來壓縮出來的檔案資料流會長甚麼樣子 是不會影響的
但是這樣的缺點就是 在結實壓縮檔解壓縮任何一個或數個檔案的時候
必須要把壓縮檔整個掃過一遍而沒辦法就只讀那個檔案那段
實務上用的方式一定比我講的這個還要聰明 甚至聰明到天才的地步
但是對普通使用者應該是這樣理解就夠你判斷了
以你的情況 壓縮幾個ISO 並不會改變太多的
這時候用結實壓縮檔的好處就不會那麼明顯
你要求壓縮比高 應該改用7z的lzma2(推薦XD)或把RAR壓縮方式調成壓縮最佳
而你那張圖純粹是因為被打包的檔案不一樣 所以索引字典之類的也不一樣
當然同個檔案壓出來的效果也不同
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.34.214.97
※ 編輯: y3k 來自: 114.34.214.97 (11/14 19:06)
推 rick65134:請問你能幫我解釋為何兩個相同的4063KB的檔案壓縮起來會 11/14 19:09
→ rick65134:很小 幾乎相當於單一4063KB的檔案去壓縮 但4065KB則無 11/14 19:10
→ y3k:你確定4065kb你是拿兩個一樣的檔案去壓嗎 11/14 19:15
推 rick65134:百分之百確定 因為是直接複製的 你也可以自己做一下實驗 11/14 19:20
→ rick65134:不會花您太多的時間 11/14 19:20
→ y3k:我突然要去哪裡生一個4065kb的檔案=_= 11/14 19:21
推 hirokofan:7z安定^_^ 11/14 19:22
→ y3k:我可以肯定的是 只要你的RAM夠大 用7z一定能有讓你滿意的結果 11/14 19:22
→ rick65134:不必一定要4065KB 以此檔案大小當邊界 隨便一個3MB和5MB 11/14 19:22
→ rick65134:對了 我的圖裡面都有顯示CRC32 可見是一樣的檔案 11/14 19:24
→ y3k:7z除了一般根本不會用到的rr功能外幾乎完勝rar 11/14 19:24
→ rick65134:唉 我是要玩免空的 rr很重要阿 11/14 19:25
→ y3k:那應該就是rar字典設計上的問題了 這個你可能要找WINRAR公司 11/14 19:25
→ y3k:不然你可以考慮這樣:7z壓縮候用rar再包一層加RR 11/14 19:26
→ rick65134:嗯 真沒辦法也只好這樣試試了 謝謝您的建議 11/14 19:40
→ y3k:7z建議這樣:選7z+lzma2 字組大小ㄍㄧㄥ到最大 字典大小再ㄍㄧ 11/14 19:41
→ y3k:ㄥ到你RAM的極限w 11/14 19:42
推 rick65134:謝謝您 馬上來試試 11/14 19:43
推 rick65134:不過7z的設定和您說的有點不同 字典和字組都有其極限 11/14 20:07
→ rick65134:而區塊大小的設定是到64GB 再上去那個"結實"似乎表示∞ 11/14 20:08
→ y3k:字組是273 字典是1024阿 如果用多線程會讓RAM使用量增加就是了 11/14 20:09
→ y3k:這些都是不需要在意的細節 你穩穩用就好了~ 11/14 20:10
推 bestpika:反正原原PO的問題跟結實無關就對了。 11/14 20:12
推 rick65134:剛據我剛剛用7z測試的結果 7z稱之為"結實區塊大小" 11/14 20:16
推 rick65134:我想下面的圖可以說明我的問題就是"結實壓縮檔" 11/14 20:35
→ rick65134:根據以上實驗結果推測 7z可以設定"結實區塊大小" 小於 11/14 20:39
→ rick65134:此大小的檔案 會去比較相似程度 大於此大小的則單獨壓縮 11/14 20:39
→ rick65134:至於winrar 部分 目前實驗結果顯示 "結實區塊大小"預設 11/14 20:40
→ rick65134:約4063KB 超過或小於的運作方式和7z雷同 11/14 20:42
→ rick65134:而上篇那些噓我的人 如果方便 請提出實驗或網頁反駁我吧 11/14 20:44
→ rick65134:剛剛再測試了一下 和字典檔大小似乎也有關係 11/15 15:48
→ rick65134:即便結實區塊大小已經設成64GB了 但是超過64MB的檔案 11/15 15:51
→ rick65134:依舊無法達到瘦身的效果 7Z字典檔最多64MB 而且壓縮時需 11/15 15:53
→ rick65134:要709MB的記憶體 解壓需要66MB的記憶體 根據我的推算 11/15 15:54
→ rick65134:壓縮2GB的檔案 需要21GB的記憶體 且解壓縮也要2GB記憶體 11/15 15:55
→ firejox:你可以嘗試看看先用tar包起來再來壓 或許有不同的效果... 11/15 18:37
推 rick65134:tar喔 來找找看windows下要用哪個壓比較好 7Z適合嗎? 11/15 21:06
→ firejox:一般常見是gz和bz來壓 gz較快 bz壓的比較多 7z倒是沒試過 11/15 23:09
→ y3k:win底下我也只知道7zip能做tarball 11/15 23:22
→ y3k:還有rick你壓縮方式有沒有選lzma2啊@@ 11/15 23:23
→ rick65134:所有設定調到最大 但只要大於64MB 則依舊無效果 11/16 02:14