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 XML
archivos, 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.
compression
information-theory
isomorfismos
fuente
fuente
1000000000 null bytes
sería una relación de compresión de 50,000,000: 1.)Respuestas:
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).
fuente
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.
fuente