Respuestas:
Depende mucho de los datos que se comprimen. Una prueba rápida con un archivo de 1 Gb lleno de ceros proporciona un tamaño comprimido de ~ 120 Kb, por lo que su archivo de 10 Kb podría expandirse a ~ 85 Mb.
Si los datos tienen poca redundancia para comenzar, por ejemplo, el archivo contiene archivos de imágenes en un formato comprimido de forma nativa (gif, jpg, png, ...), entonces gzip puede no agregar más compresión. Para archivos binarios como ejecutables de programas, es posible que vea una compresión de hasta 2: 1, para texto plano, HTML u otras marcas 3: 1 o 4: 1 o más no es improbable. Es posible que vea 10: 1 en algunos casos, pero el ~ 8700: 1 visto con un archivo lleno con un solo símbolo es algo que no va a ver fuera de circunstancias artificiales similares.
Puede verificar cuántos datos resultarían de desempaquetar un archivo gzip, sin escribir realmente su contenido sin comprimir en el disco, gunzip -c file.gz | wc --bytes
esto descomprimirá el archivo pero no almacenará los resultados, sino wc
que los pasará a los cuales contarán el número de bytes a medida que pasan luego descartarlos. Si el contenido comprimido es un archivo tar que contiene muchos archivos pequeños, es posible que se necesite notablemente más espacio en el disco para descomprimir el archivo completo, pero en la mayoría de los casos, el recuento devuelto por la gunzip
salida de la tubería wc
será tan preciso como sea necesario.
phpinfo()
, se comprime muy bien. La información técnica en ese resultado contiene más repetición directa que la porción promedio del lenguaje natural también, y la distribución del alfabeto es probablemente menos uniforme, lo que podría ayudar a la etapa de Huffman a obtener mejores resultados.
Por lo general, no obtiene más del 95% de compresión (por lo que los datos comprimidos de 10kB se descomprimirían a ~ 200kB), pero hay archivos especialmente diseñados que se expanden exponencialmente. Busque 42.zip
, descomprime a pocos petabytes de datos (sin sentido).
Citado textualmente de https://stackoverflow.com/a/16794960/293815
La relación de compresión máxima del formato desinflado es 1032: 1. Esto se debe a que la ejecución más larga que puede codificarse es de 258 bytes. Se requieren al menos dos bits para cada ejecución (un bit para el código de longitud y un bit para el código de distancia), por lo tanto, 4 * 258 = 1032 bytes sin comprimir pueden codificarse por un byte comprimido.
Puede obtener más compresión al comprimir el resultado de gzip. Normalmente eso no mejora la compresión, pero puede funcionar durante largos períodos.
Por cierto, el enfoque LZ77 utilizado por deflate es más general que la codificación de longitud de ejecución. En lugar de solo una longitud, se usa un par longitud / distancia. Esto permite copiar una cadena desde cierta distancia, o replicar un byte como en la longitud de ejecución para una distancia de uno, o replicar triples de bytes con una distancia de tres, etc.
La relación de compresión de cualquier algoritmo de compresión será una función de los datos que se comprimen (además de la longitud de esos datos).
Aquí hay un análisis en MaximumCompression ,
mira una de las muestras como,
Resumen de las pruebas de referencia de compresión de archivos múltiples
Tipo de archivo: múltiples tipos de archivos (46 en total) # de archivos para comprimir en esta prueba: 510 Tamaño total del archivo (bytes): 316.355.757 Tamaño promedio de archivo (bytes): 620,305 Archivo más grande (bytes): 18,403,071 Archivo más pequeño (bytes): 3,554
La respuesta a su pregunta, depende de la entrada. Para darle una idea de cómo se realiza la compresión, vea estos videos de seis minutos.
https://www.youtube.com/watch?v=ZdooBTdW5bM
Lo que debe obtener de él es que la tasa de compresión depende de la frecuencia de cada carácter, por lo tanto, no hay una tasa máxima de generel, depende de la entrada, para el texto en inglés es aproximadamente el 65 por ciento.