ขนาดที่ใหญ่ที่สุด a gzip คืออะไร (พูดถึง 10kb เพื่อเป็นตัวอย่าง) สามารถแตกไฟล์ได้?
ขนาดที่ใหญ่ที่สุด a gzip คืออะไร (พูดถึง 10kb เพื่อเป็นตัวอย่าง) สามารถแตกไฟล์ได้?
คำตอบ:
มันขึ้นอยู่กับข้อมูลที่ถูกบีบอัด การทดสอบอย่างรวดเร็วด้วยไฟล์ 1Gb ที่เต็มไปด้วยศูนย์จะมีขนาดบีบอัด ~ 120Kb ดังนั้นไฟล์ 10Kb ของคุณอาจขยายเป็น ~ 85Mbytes
หากข้อมูลมีความซ้ำซ้อนต่ำในการเริ่มต้นตัวอย่างเช่นไฟล์เก็บถาวรมีไฟล์รูปภาพในรูปแบบที่ถูกบีบอัดแบบดั้งเดิม (gif, jpg, png, ... ) ดังนั้น gzip อาจเพิ่มการบีบอัดไม่ได้เลย สำหรับไฟล์ไบนารีเช่นโปรแกรมที่เรียกใช้งานได้คุณอาจเห็นการบีบอัดสูงถึง 2: 1 สำหรับข้อความธรรมดา HTML หรือมาร์กอัพอื่น 3: 1 หรือ 4: 1 หรือมากกว่านั้นไม่น่าเป็นไปได้ คุณอาจเห็น 10: 1 ในบางกรณี แต่ ~ 8700: 1 ที่เห็นด้วยไฟล์ที่เต็มไปด้วยสัญลักษณ์เดียวคือสิ่งที่คุณจะไม่ได้เห็นภายนอกสถานการณ์จำลองที่คล้ายกัน
คุณสามารถตรวจสอบปริมาณข้อมูลที่จะเป็นผลมาจากการเปิดออกไฟล์ gzip โดยไม่จริงการเขียนเนื้อหาที่ไม่มีการบีบอัดของมันไปยังดิสก์ด้วยgunzip -c file.gz | wc --bytes
- นี้จะยกเลิกการบีบอัดไฟล์ แต่ไม่เก็บผลแทนผ่านพวกเขาเพื่อwc
ที่จะนับจำนวนไบต์ที่พวกเขาผ่าน จากนั้นทิ้งพวกเขา ถ้าเนื้อหาที่ถูกบีบอัดเป็นไฟล์ tar ที่มีไฟล์ขนาดเล็กจำนวนมากมากมายที่คุณอาจพบว่าพื้นที่ดิสก์ที่เห็นได้ชัดมากขึ้นเป็นสิ่งที่จำเป็นในการแกะเก็บเต็ม แต่ในกรณีส่วนใหญ่นับกลับมาจากท่อgunzip
ส่งออกผ่านทางwc
เป็นไปได้เป็นที่ถูกต้องตามที่คุณต้องการ
phpinfo()
บีบอัดได้ดีมาก ข้อมูลทางเทคนิคในเอาต์พุตนั้นมีการทำซ้ำโดยตรงมากกว่าภาษาธรรมชาติโดยเฉลี่ยและการกระจายตัวอักษรอาจไม่ราบรื่นซึ่งจะช่วยให้เวที Huffman ได้ผลลัพธ์ที่ดีขึ้น
โดยปกติคุณจะไม่ได้รับการบีบอัดมากกว่า 95% (เพื่อให้ข้อมูล 10kB gzipped จะขยายเป็น ~ 200kB) แต่มีไฟล์ที่สร้างขึ้นมาเป็นพิเศษที่ขยายขึ้นอย่างทวีคูณ ค้นหา42.zip
โดยจะขยายข้อมูลเป็นไม่กี่เพตาไบต์ (ไร้ความหมาย)
อ้างถึง verbatim จากhttps://stackoverflow.com/a/16794960/293815
อัตราส่วนการบีบอัดสูงสุดของรูปแบบการยุบคือ 1032: 1 นี่เป็นเพราะการรันที่ยาวที่สุดที่สามารถเข้ารหัสได้คือ 258 ไบต์ อย่างน้อยสองบิตเป็นสิ่งจำเป็นสำหรับการรันแต่ละครั้ง (หนึ่งบิตสำหรับรหัสความยาวและหนึ่งบิตสำหรับรหัสระยะทาง) ดังนั้น 4 * 258 = 1,032 ไบต์ที่ไม่มีการบีบอัดสามารถเข้ารหัสได้ต่อหนึ่งไบต์ที่บีบอัด
คุณสามารถรับการบีบอัดเพิ่มเติมได้โดย gzipping ผลลัพธ์ของ gzip โดยปกติแล้วจะไม่ปรับปรุงการบีบอัด แต่จะสามารถทำได้นานมาก
โดยวิธีการวิธี LZ77 ใช้โดย deflate ทั่วไปมากกว่าการเข้ารหัสความยาวรัน แทนที่จะใช้ความยาวจะใช้คู่ความยาว / ระยะทาง วิธีนี้ช่วยให้การคัดลอกสตริงจากระยะไกลกลับมาหรือทำซ้ำไบต์เช่นเดียวกับในระยะความยาวหนึ่งหรือจำลองแบบสามไบต์ที่มีระยะทางสามเป็นต้น
อัตราส่วนการบีบอัดของอัลกอริทึมการบีบอัดใด ๆ จะเป็นฟังก์ชันของข้อมูลที่ถูกบีบอัด (นอกเหนือจากความยาวของข้อมูลนั้น)
นี่คือการวิเคราะห์ที่MaximumCompression ,
ดูที่หนึ่งของกลุ่มตัวอย่างเช่น
สรุปการทดสอบเกณฑ์มาตรฐานการบีบอัดไฟล์หลาย ๆ ไฟล์
ประเภทไฟล์: หลายประเภทไฟล์ (รวม 46) # ของไฟล์ที่จะบีบอัดในการทดสอบนี้: 510 ขนาดไฟล์ทั้งหมด (ไบต์): 316.355.757 ขนาดไฟล์เฉลี่ย (ไบต์): 620,305 ไฟล์ที่ใหญ่ที่สุด (ไบต์): 18,403,071 ไฟล์ที่เล็กที่สุด (ไบต์): 3,554
ไฟล์ขนาดใหญ่ที่มีสัญลักษณ์เดียวเท่านั้นที่จะบีบอัดได้ดีมาก
ศูนย์ 10 MB ในไฟล์บีบอัดด้วย gzip -9 ถึง 10217 ดังนั้นอัตราส่วนสูงสุดจะอยู่ที่ประมาณ 1,000 เท่า
คำตอบสำหรับคำถามของคุณขึ้นอยู่กับอินพุต เพื่อให้คุณมีความคิดว่าการบีบอัดข้อมูลเสร็จแล้วสามารถดูวิดีโอหกนาทีนี้ได้
https://www.youtube.com/watch?v=ZdooBTdW5bM
สิ่งที่คุณควรได้รับจากมันคืออัตราการบีบอัดขึ้นอยู่กับความถี่ของตัวละครแต่ละตัวดังนั้นจึงไม่มีอัตราสูงสุดทั่วไปมันขึ้นอยู่กับอินพุตสำหรับข้อความภาษาอังกฤษประมาณ 65 เปอร์เซ็นต์