假設我們壓縮例如.txt文件,其具有字節大小。壓縮並轉換爲.zip文件後,大小將爲字節。我們如何估算壓縮文件的「開銷」?
有沒有辦法估計或計算「開銷」的近似大小?
什麼因素影響開銷大小?
Zlib計算開銷:他們說:「......只有擴展是每個16 KB塊(約0.03%)的開銷爲五個字節,加上整個流的一次性開銷爲六個字節。
我只是把這個網站告訴它可以估計「開銷」的大小。
注意:開銷是一些額外的數據添加到壓縮版本的數據。
假設我們壓縮例如.txt文件,其具有字節大小。壓縮並轉換爲.zip文件後,大小將爲字節。我們如何估算壓縮文件的「開銷」?
有沒有辦法估計或計算「開銷」的近似大小?
什麼因素影響開銷大小?
Zlib計算開銷:他們說:「......只有擴展是每個16 KB塊(約0.03%)的開銷爲五個字節,加上整個流的一次性開銷爲六個字節。
我只是把這個網站告訴它可以估計「開銷」的大小。
注意:開銷是一些額外的數據添加到壓縮版本的數據。
從the ZIP format ..
假設只有一個中央目錄和沒有意見和沒有額外的字段,開銷應該是類似於以下。 (塔頂只會上去如果添加任何額外的元數據。)
這樣的開銷,其中afn
是所有文件名的平均長度,和f
是文件數:
f * ((30 + afn) + 12 + (46 * afn)) + 22
= f * (88 + 2 * afn) + 22
這當然使得ZIP一個很差選擇對於其中不需要(文件)結構或元數據的壓縮數據的非常微小的位 - zlib,在另一方面,是一種非常薄放氣包裝。
對於小有效載荷,一個放氣差實現也可能導致較大的顯著「壓縮」的大小,比如臭名昭著的.NET實現..
實例:
存儲1文件,名稱爲「hello world note」。TXT」(LEN = 20),
= 1 * (88 + 2 * 20) + 22 = 150
開銷字節
存儲100個文件,用14個字母的平均名稱,
= 100 * (88 + 2 * 14) + 22 = 11622
開銷字節
太謝謝你了。例如我不知道如何獲得(EOCD)大小,以及如何計算'afn'?再次感謝。 – user3184352
'afn =(len(filename1)+ len(filename2 )+ LEN(filename3)+ ..)/ number_of_fi與其他假設(例如,沒有附加,因此沒有重複的CD條目),只有一個22字節的EOCD。 – user2864740
你是說EOCD對於所有文件總是22? 「數據描述符」和「本地文件頭」分別總是16和30? – user3184352