作者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)
1F:推 rick65134:請問你能幫我解釋為何兩個相同的4063KB的檔案壓縮起來會 11/14 19:09
2F:→ rick65134:很小 幾乎相當於單一4063KB的檔案去壓縮 但4065KB則無 11/14 19:10
3F:→ y3k:你確定4065kb你是拿兩個一樣的檔案去壓嗎 11/14 19:15
4F:推 rick65134:百分之百確定 因為是直接複製的 你也可以自己做一下實驗 11/14 19:20
5F:→ rick65134:不會花您太多的時間 11/14 19:20
6F:→ y3k:我突然要去哪裡生一個4065kb的檔案=_= 11/14 19:21
7F:推 hirokofan:7z安定^_^ 11/14 19:22
9F:→ y3k:我可以肯定的是 只要你的RAM夠大 用7z一定能有讓你滿意的結果 11/14 19:22
10F:→ rick65134:不必一定要4065KB 以此檔案大小當邊界 隨便一個3MB和5MB 11/14 19:22
11F:→ rick65134:對了 我的圖裡面都有顯示CRC32 可見是一樣的檔案 11/14 19:24
12F:→ y3k:7z除了一般根本不會用到的rr功能外幾乎完勝rar 11/14 19:24
13F:→ rick65134:唉 我是要玩免空的 rr很重要阿 11/14 19:25
14F:→ y3k:那應該就是rar字典設計上的問題了 這個你可能要找WINRAR公司 11/14 19:25
15F:→ y3k:不然你可以考慮這樣:7z壓縮候用rar再包一層加RR 11/14 19:26
16F:→ rick65134:嗯 真沒辦法也只好這樣試試了 謝謝您的建議 11/14 19:40
17F:→ y3k:7z建議這樣:選7z+lzma2 字組大小ㄍㄧㄥ到最大 字典大小再ㄍㄧ 11/14 19:41
18F:→ y3k:ㄥ到你RAM的極限w 11/14 19:42
19F:推 rick65134:謝謝您 馬上來試試 11/14 19:43
22F:推 rick65134:不過7z的設定和您說的有點不同 字典和字組都有其極限 11/14 20:07
23F:→ rick65134:而區塊大小的設定是到64GB 再上去那個"結實"似乎表示∞ 11/14 20:08
25F:→ y3k:字組是273 字典是1024阿 如果用多線程會讓RAM使用量增加就是了 11/14 20:09
26F:→ y3k:這些都是不需要在意的細節 你穩穩用就好了~ 11/14 20:10
27F:推 bestpika:反正原原PO的問題跟結實無關就對了。 11/14 20:12
28F:推 rick65134:剛據我剛剛用7z測試的結果 7z稱之為"結實區塊大小" 11/14 20:16
30F:推 rick65134:我想下面的圖可以說明我的問題就是"結實壓縮檔" 11/14 20:35
32F:→ rick65134:根據以上實驗結果推測 7z可以設定"結實區塊大小" 小於 11/14 20:39
33F:→ rick65134:此大小的檔案 會去比較相似程度 大於此大小的則單獨壓縮 11/14 20:39
34F:→ rick65134:至於winrar 部分 目前實驗結果顯示 "結實區塊大小"預設 11/14 20:40
35F:→ rick65134:約4063KB 超過或小於的運作方式和7z雷同 11/14 20:42
36F:→ rick65134:而上篇那些噓我的人 如果方便 請提出實驗或網頁反駁我吧 11/14 20:44
37F:→ rick65134:剛剛再測試了一下 和字典檔大小似乎也有關係 11/15 15:48
38F:→ rick65134:即便結實區塊大小已經設成64GB了 但是超過64MB的檔案 11/15 15:51
39F:→ rick65134:依舊無法達到瘦身的效果 7Z字典檔最多64MB 而且壓縮時需 11/15 15:53
40F:→ rick65134:要709MB的記憶體 解壓需要66MB的記憶體 根據我的推算 11/15 15:54
41F:→ rick65134:壓縮2GB的檔案 需要21GB的記憶體 且解壓縮也要2GB記憶體 11/15 15:55
42F:→ firejox:你可以嘗試看看先用tar包起來再來壓 或許有不同的效果... 11/15 18:37
43F:推 rick65134:tar喔 來找找看windows下要用哪個壓比較好 7Z適合嗎? 11/15 21:06
44F:→ firejox:一般常見是gz和bz來壓 gz較快 bz壓的比較多 7z倒是沒試過 11/15 23:09
45F:→ y3k:win底下我也只知道7zip能做tarball 11/15 23:22
46F:→ y3k:還有rick你壓縮方式有沒有選lzma2啊@@ 11/15 23:23
48F:→ rick65134:所有設定調到最大 但只要大於64MB 則依舊無效果 11/16 02:14