¿Por qué la compresión ZIP no comprime nada?


18

Un directorio de 398 MB solo se comprimió a 393 MB con 7Z y compresión ZIP normal. ¿Esto es normal? Si es así, ¿por qué la gente continúa usando ZIP en Windows?

Respuestas:


70

Si está comprimiendo cosas que ya están comprimidas (AVI, JPEG, MP3), no obtendrá mucho más que empaquetar todo en un solo archivo.


1
E incluso lo he visto funcionar a la inversa haciendo que el archivo comprimido sea más grande que los archivos comprimidos individuales.
Fiasco Labs

32

La compresión funciona buscando patrones repetitivos dentro de los elementos para comprimir. Además, debido a que no desea perder ningún dato mientras comprime sus archivos, la compresión debe ser sin pérdidas (*).
Ahora con eso en la cabeza, piense en la forma en que los archivos (elementos) se almacenan en una computadora. En el nivel más bajo, todos son solo un grupo de 0 y 1.

La pregunta se puede transformar así en: " ¿Cómo puedo representar un grupo de 1 y 0 de una manera más compacta que la representación original? "

Entonces, comencemos desde el principio, ¿cómo puede compactar la representación normal de un solo bit (un solo 1 o un solo 0)?
La respuesta es realmente fácil: ¡no puedes! ... un solo bit se representa de la manera más compacta posible.

Es justo, tomemos un ejemplo más grande, ¿cómo comprimirías una cadena binaria como 0111 0111 0100 0111 ?
Bueno, porque ya sabemos que mirar los bits individuales no nos ayudará en absoluto, sabemos que tenemos que mirar a una escala mayor. Por ejemplo, tomemos 4 bits a la vez. Ahora vemos que la cadena binaria "0111" aparecerá 3 veces en el ejemplo, entonces, ¿por qué no representamos eso con un solo bit: 0? pero esto todavía deja a 0100 en la oscuridad, así que representemos eso con "1"
Sabemos que hemos comprimido el original a: "0010"

¡Eso es realmente bueno! Sin embargo, esto es solo lo básico del "algoritmo de codificación de Huffman" , y en el mundo real será un poco más complicado que eso (y también necesitaría almacenar una tabla con la información de codificación, pero eso es un demasiado lejos para responder esta pregunta).

Ahora para responder realmente a su pregunta: ¿por qué no se pueden comprimir todos los datos de esa manera? Bueno, tomemos otro ejemplo: "0001 0110 1000 1111", si utilizáramos la misma técnica que la anterior, no podríamos comprimir los datos (no se encuentra la repetición), y por lo tanto no se beneficiaría de la compresión ...


(*) hay, por supuesto, excepciones al respecto. El ejemplo más conocido de esto es la compresión utilizada para archivos MP3. aquí se perderá alguna información sobre los sonidos al convertirla del archivo original sin formato al formato MP3, por lo que esta compresión es con pérdida . Otro ejemplo es el formato .JPG para imágenes


6

El proceso de compresión toma patrones repetibles y los tokeniza a patrones más cortos. La salida es, en su mayoría, no repetible y, por lo tanto, no puede comprimirse mucho, si es que lo hace.


6

De la sección Limitaciones del artículo de Wikipedia sobre Compresión sin pérdida :

Los algoritmos de compresión de datos sin pérdida no pueden garantizar la compresión de todos los conjuntos de datos de entrada. En otras palabras, para cualquier algoritmo de compresión de datos (sin pérdida), habrá un conjunto de datos de entrada que no se reducirá cuando sea procesado por el algoritmo. Esto se prueba fácilmente con las matemáticas elementales utilizando un argumento de conteo. ...

Básicamente, es teóricamente imposible comprimir todos los datos de entrada posibles sin pérdidas.


Es más difícil comprimir datos que ya estaban comprimidos. Las imágenes y los videos están en su mayoría comprimidos ya que el tamaño original sería muy grande
phuclv

4

¿Esto es normal?

No. No con archivos "normales". ¿Qué tipo de archivos estaba comprimiendo? Si ya estaban comprimidos, por ejemplo, son JPG, GIF, PNG, videos o incluso otros archivos zip, entonces ningún algoritmo los comprimirá demasiado. Si intenta comprimir archivos de texto, XML, BMP sin comprimir, código fuente, etc., zip proporcionará una buena compresión, pero probablemente no sea la mejor opción.

¿Por qué las personas continúan usando ZIP en Windows?

Una razón es que hay un buen manejo de zip integrado en el sistema: puede hacer clic derecho en cualquier lugar y crear un nuevo archivo zip, y luego colocar cosas en él. Puede hacer doble clic en un archivo zip y se abrirá como una carpeta. Puede copiar cosas y, a veces, incluso usarlo en su lugar. No necesita instalar WinZip o 7z ni ningún otro programa. Por lo general, recomiendo que la gente no lo haga.


2

En un archivo zip que contiene muchos archivos, cada archivo se comprime de forma independiente. Si existe una gran similitud entre los archivos, entonces una herramienta diferente podría proporcionar una compresión mucho mejor.

Por ejemplo, tar.gz une los archivos, luego comprime los resultados. Del mismo modo, un archivo rar "sólido" hace uso de similitudes entre archivos.

La desventaja de tar.gz o un rar sólido es que ya no puede extraer un solo archivo de un archivo grande sin descomprimir el archivo hasta donde está el archivo que desea.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.