¿Por qué un archivo comprimido 7 es más grande que el archivo sin formato?

¿Por qué un archivo comprimido 7 es más grande que el archivo sin formato?

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

Intenté comprimir un archivo .exe pero en realidad se hizo más grande.

ingrese la descripción de la imagen aquí

¿Es este el resultado esperado?

Respuesta1

Todo se reduce a un concepto llamadoentropía. VerWikipedia.

La idea básica es que, si existiera una operación de compresión que pudierasiemprehacer un archivo más pequeño, entonces la lógica dicta que dicha operación de compresión podría reducir cualquier archivo a 0 bytes y aún retener todos los datos. Pero esto esabsurdo, porque sabemos que 0 bytes no pueden transmitir ninguna información. Así que acabamos de demostrar que hayno puede existirun algoritmo de compresión que siempre hace que su entrada sea más pequeña, porque si ese fuera el caso, cualquier información podría almacenarse en 0 bytes, pero 0 bytes implica laausenciade información, por lo que no se puede tener simultáneamenteNoinformación ytodoinformación. Por tanto, es absurdo.

Debido a este concepto teórico, cada programa de compresión que utilices va aaumentar el tamaño de (o en el mejor de los casos, mantener el mismo tamaño de)algunoaporte. Es decir, para cualquier algoritmo de compresión que diseñe o utilice, habrá ciertas entradas que serán más pequeñas y otras que no.

Los datos ya comprimidos son generalmente un terrible candidato para una mayor compresión, porque la mayoría de los algoritmos de compresión sin pérdidas se basan en los mismos principios teóricos. Éleses posible comprimir aún más los datos mal comprimidos; pero, para empezar, esto es menos eficiente que simplemente comprimirlo con el mejor algoritmo disponible a partir de los datos originales.

Por ejemplo, si tiene un archivo de texto de 100 MB y lo comprime usando el algoritmo Zip normal, es posible que se comprima hasta 50 MB. Si luego comprime el archivo Zip con LZMA2, es posible que lo reduzca a 40 o 45 MB, porque LZMA tiene unamayor relación de compresiónpara la mayoría de los datos comprimibles que Zip. Por lo tanto, es lógico que también pueda comprimir datos Zip, porque Zip no absorbe completamente toda la entropía. Pero si elimina el contenedor Zip por completo, es posible que pueda hacerlo aún más pequeño comprimiendo el texto sin formato con LZMA2, lo que podría producir algo del orden de 30 a 35 MB (estos son solo "números aéreos" para ilustrar el concepto). .

En el caso de ese binario que estás intentando comprimir, esmás grandeporque el formato de archivo 7-Zip tiene que crear su propia estructura interna y empaquetar los datos del ejecutable ya comprimido en el formato 7-Zip. Contiene cosas como un diccionario, un encabezado de archivo, etc. Estos datos adicionales suelen quedar más que compensados ​​por el ahorro que supone comprimir los datos en sí, pero parece que el ejecutable que estás intentando comprimir ya está comprimido con algún tipo de LZMA; de lo contrario, probablemente reduciría el tamaño del ejecutable o lo aumentaría ligeramente, en lugar de aumentarlo en 2 MB (que es mucho).

Respuesta2

Los algoritmos de compresión subyacentes utilizados en 7z sonsin pérdidas. Lo que significa que puedes comprimir y descomprimir un archivo de forma iterativa muchas veces. Además, después de cada iteración el archivo permaneceráexactamentelo mismo.

Desafortunadamente, no se puede esperar unasin pérdidasEl algoritmo de compresión se puede aplicar muchas veces con un resultado siempre positivo. Hay un límite estricto que no puede traspasar. Aproximadamente, este límite depende de qué tan estrechamente una secuencia de entrada ensamble datos aleatorios. Sobre todo, los algoritmos sin pérdidas se utilizan para la compresión de archivos, transferencias de datos HTML de Internet, copias de seguridad y otras operaciones que requieren que un archivo de salida se descomprima exactamente en el mismo archivo de entrada original.

En contraste consin pérdidascompresión, siempre puede esperar una disminución del tamaño del archivo después de la compresión conalgoritmos de compresión con pérdida (o con pérdidas). La desventaja es que no puedesexactamenterestaurar un archivo original después de una única iteración de compresión y descompresión. Estos algoritmos son más famosos para transmisiones y almacenamiento de audio/vídeo/imagen.

bzip2,LZMA,LZMA2y otros algoritmos utilizados por7zformato son todossin pérdidas. Por lo tanto habrá un límite después del cual ya no podrá comprimirse. Además, las imágenes ejecutables (.exe) suelen ser archivos muy comprimidos.7zipComo muchas otras herramientas de compresión, incorpora algunos metadatos, lo que de hecho puede hacer que el archivo de salida sea más grande.

Rompecabezas: ¿qué pasaría si tuviéramos un algoritmo sin pérdidas que siempre pudiera disminuir el tamaño de un archivo?

En este caso, siempre verás que el archivo comprimido es más pequeño que el archivo de entrada. Vea un comentario a continuación por qué no es posible.

Respuesta3

Si el ejecutable original ya estaba comprimido (o contenía datos muy comprimidos o datos no comprimibles), al comprimirlo aumentará el tamaño.

Respuesta4

la idea de comprimir:

el software de compresión crea una lista de archivos y elimina el contenido duplicado.

Al comprimir archivos ya comprimidos, es posible que los archivos comprimidos sean más grandes que los originales.

información relacionada