¿Cuáles son algunas relaciones típicas de compresión sin pérdida?


8

Un cliente intentaba enviarme 250 GB de archivos. Después de intentar varias formas de compartir los datos, me envió una carpeta comprimida de solo 4 GB de tamaño. Eso me suena a demasiada compresión: no creo que cuando haya comprimido cosas haya reducido más del 20% del tamaño.

¿Cuáles son algunas relaciones de compresión sin pérdida típicas que uno vería en la práctica? (O, alternativamente, un rango).

ACTUALIZACIÓN: Me doy cuenta de que es imposible decirlo sin poder adivinar el contenido real de la información, por lo que tal vez esta fue una pregunta mal formulada. No puedo compartir los datos del cliente. Pero mirando los XMLarchivos, hay muchas frases repetidas, por ejemplo

<thing>
    <property="1" value="2" />
    <property="3" value="4" />
    <property="5" value="6" />
    <property="7" value="8" />
    <property="9" value="10" />
    <property="11" value="12" />
    <property="13" value="14" />
</thing>

lo cual parece bastante compresible.


55
Acabo de hacer un archivo de 1 GB de todos los bytes nulos, y se comprimió en un archivo zip de 1 MB, para una relación de compresión de 900: 1. (Comprimirlo con la frase 1000000000 null bytessería una relación de compresión de 50,000,000: 1.)
endolito

La proporción que mencionó 250: 4 parece posible, teniendo en cuenta la fuente (archivo de texto) que ha cargado aquí.
Fat32

Respuestas:


3

Mi encuesta sobre compresión, "Una encuesta de enfoques arquitectónicos para la compresión de datos en caché y sistemas de memoria principal" , muestra que la mayoría de las técnicas prácticas en puntos de referencia generales alcanzan una relación de compresión ~ 2X y algunas hasta 4X, aunque un potencial mayor (por ejemplo, ~ 16X en algunos casos) existe (ver Sección 2.2). La razón para no alcanzar el potencial completo es que las técnicas con una relación de compresión más alta también tienen una sobrecarga más alta (por ejemplo, hardware adicional que consume energía, mucho procesamiento adicional, etc.) o pueden no ser lo suficientemente generales (por ejemplo, comprimir archivos con todos los ceros).


8

Realmente depende de cuánta redundancia hay en los datos. Si todos los 250 GB eran solo '0', entonces podría obtener niveles fabulosos de compresión.

Esta página muestra algunos resultados para la compresión de texto en inglés. Comprime 2,988,578 bytes de texto usando varias técnicas. Los tres primeros son: 330,571 (88.94%), 333,759 (88.83%) y 352,722 (88.20%).

Relacionando esto con su caso: eso significa que 250 GB se comprimirían (en el mejor de los casos) a 27.65 GB.

¿Entonces quizás hay muchos parches repetitivos en blanco en los datos?


ACTUALIZAR:

Según su edición, aquí hay otro artículo que analiza las tasas de compresión XML . El resultado final (Figura 8; captura de pantalla a continuación) es que parecen ver tasas de compresión que van desde 1 (ninguna) hasta aproximadamente 50 como máximo. Eso sugiere que tiene razón al sospechar de la tasa de compresión de 62.5 a 1 (250 a 4) de su cliente.

ingrese la descripción de la imagen aquí


Gran respuesta Peter y @endolith. He actualizado la pregunta en función de sus respuestas. Muy útil.
isomorfismos
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.