lunes, 4 de abril de 2016

El mejor formato de compresion del mundo (desarrollado por mi) es un fracaso :')

Hace ya tiempo publiqué un post en el que me adelantaba a deciros que estaba desarrollando un formato de compresión que combinaría rar, 7z y flac (este último fue descartado) para conseguir los mejores resultados de compresión hasta el momento. Bien... Aunque en Enero ya estaba terminado, por motivos académicos he tenido el blog un poco abandonado últimamente.

En el formato *.mc el compresor separa un fichero en varios fragmentos del mismo tamaño y les aplica a cada uno compresión rápida en cada uno de los formatos (rar y 7z) para determinar cual es el mas potente con ese fragmento de archivo. Una vez hecho esto, todos los fragmentos que se comprimen mejor en 7z se unen en un único archivo, lo mismo con los fragmentos para rar. Estos archivos se comprimen con máxima compresión y se unen al fichero mc... Va, lo veréis mejor con una imagen:





Y ya que estamos también os adjunto el formato de la cabecera que decidí utilizar para mc:


El formato fue un fracaso, por lo que no os adjunto ni el compresor ni decompresor (A menos que realmente tengáis interés en este proyecto y me lo pidáis por comentario) ya que aunque en la teoría todo cuadra, en la practica usar varios formatos a la vez y separar el archivo en fragmentos muchas veces complica las cosas a los compresores, ya que entre otras cosas se pierde eficiencia debido a la localidad espacial. No solo eso, sino que ademas en muchos archivos, la compresión 7z ofrece mejor compresión en todos los fragmentos, haciendo que mc sea equivalente a comprimir en 7z añadiendo una cabecera adicional que aumenta el espacio.

Hice la prueba con el rom de Super Mario 64 y el buscaminas de Windows XP y estos fueron los resultados:

SM64
Tamaño original: 8192 Kb
RAR: 5726 Kb
7z: 5567 Kb
Mc: 5534 Kb

Winmine.exe
Tamaño original: 120.320 bytes
RAR: 63.646 bytes
7z: 66.762 bytes
Mc: 61.423 bytes

Ah... Se que es algo que se suele dar por hecho, pero todos los archivos comprimidos en mc son descomprimidos sin problemas.

Os adjunto el fichero winmine.mc por si queréis echarle un vistazo a la estructura, aunque si lo haceis os comento que en vez de usar 7z he usado xz que viene a ser lo mismo pero para un único archivo y con menos cabecera. Recordad que me podéis comentar abajo lo que queráis. Yo me quedaré aquí llorando un poco :'')

1 comentario:

  1. May I see the src-code for you (de)compressor? Very interested to poke around with it.

    ResponderEliminar