estoy usando un servidor basado en bucle de eventos en Python trenzado que almacena archivos, y me gustaría ser capaz de clasificar los archivos según su compresibilidad.¿Cómo puedo estimar la compresibilidad de un archivo sin comprimirlo?
Si la probabilidad de que habían benefician de compresión es alta, que iría a un directorio con compresión btrfs encendido, de lo contrario irían a otra parte.
No necesito estar seguro - 80% de precisión sería un montón, y se ahorraría una gran cantidad de espacio en disco. Pero dado que también existe el problema de rendimiento de CPU y fs, no puedo simplemente guardar todo comprimido.
Los archivos están en los bajos megabytes. No puedo comprimirlos sin usar una gran cantidad de CPU y demorar indebidamente el ciclo de eventos o refactorizar un algoritmo de compresión para que encaje en el ciclo de eventos.
¿Hay mejores prácticas para dar una estimación rápida de la compresibilidad? Lo que se me ocurre es extraer un pequeño fragmento (pocos kB) de datos del comienzo del archivo, comprimirlo (con un retraso presumiblemente tolerable) y basar mi decisión en eso.
¿Alguna sugerencia? ¿Sugerencias? ¿Defectos en mi razonamiento y/o problema?
Solo para decir lo obvio, no mencionó el algoritmo de compresión que planea usar. Habiendo dicho eso, no creo que haya nada que puedas hacer sin al menos inspeccionar el archivo al menos una vez – Alexander
¿Por qué no puedes usar la compresión progresiva? –
Comprimir una parte pequeña no ayudará: si el resto del archivo solo está hecho de copias de esta parte, será fácil de comprimir. Me temo que la única buena solución es intentar comprimir todo el archivo. –