jueves, enero 20, 2011

Comparación entre los distintos formatos de compresión (zip,gzip,bzip2,rar,7z), tamaño de compresión, tiempo do compresión, descompresión.



Comparación entre los distintos formatos de compresión (zip,gzip,bzip2,rar,7z), tamaño de compresión, tiempo do compresión, descompresión.


Comparative between compression formats (zip,gzip,bzip2,rar,7z), compression size, compression time, decompression time.


Este comparativo se realiza sobre la compresión de un archivo grande, especificamente un archivo de imagen (.iso) de un juego de GameCube, y los elementos que se miden son el tamaño y el tiempo de compresión, en todos los casos se utiliza el nivel de compresión máxima con el fin de ver que formato brinda la mejor compresión.


This comparative is about the compression of a big file, specificaly a (.iso) image file of a GameCube game, the measure properties are compression time and compression size, in all the cases maximum compression level is used to be able to see witch format performs better.


Formato (format) parametros (params) Tamaño (size)
bytes
Tiempo (time) Tiempo descompresion
ORIGINAL 1459,978240
zip (.zip) -9 1272,705622 6m 56s 2m 9s
gzip (.gz) -9 1272,705473 6m 51s 2m 2s
bzip2 (.bz2) -9 1268,500602 31m 22s 8m 48s
rar (.rar) -m5 1212,932724 49m 13s 2m 41s
p7zip (.7z) defaults 1185,334394 31m 27s 6m 37s
p7zip -mx=9 1159,741390 42m 1s
p7zip -m0=LZMA2 -mx=9 1158,557214 37m 33s, 45m 9s 6m 4s

Como podemos ver los formatos que más se la rifan son el .rar y el .7z, por una diferencia considerable con los otros por lo que realizo más pruebas para estos dos formatos específicos con más archivos:

formato Tamaño Tiempo
original 1459,978240
rar a -m5 x.iso.rar x.iso 1163,104105 47m 49s
7z a -m0=LZMA2 -mx=9 x.iso.7z x.iso 1123,311172 2h 33m 1s
7z a -m0=LZMA2 -mx=9 -md=32m x.iso.7z x.iso 1147,526305 31m 35s

Como se aprecia en la tabla anterior, el 7z da una mejor compresión pero se tarda 2 horas para conseguir 40Mb menos, supongo que es por el tamaño default con que asigna el diccionario ya que consume gran cantidad de memoria, y me di cuenta que utilizo espacio de intercambio, por lo que probablemente eso impacto en tanto tiempo de ejecución, para comprobar realice la prueba definiendo el tamaño de diccionario limitando la cantidad de memoria requerida, según wikipedia, la cantidad requirida de RAM es 10 veces el tamaño del diccionario al comprimir y el tamaño del diccionario al descomprimir.

Así que con un diccionario de 32Mb -md=32m el tiempo de ejecución se reduce considerablemente incluso a un tiempo menor que el rar, con una compresión mejor.


Aquí el resultado con otro archivo, como se puede ver .7z obtiene mejor tiempo y una reducción considerable de 107Mb menos que .rar

formato Tamaño Tiempo
original 1459,978240
rar a -m5 832,572483 38m 42s
7z a -m0=LZMA2 -mx=9 -md=32m 725,846076 32m 33s

El resultado de otro archivo:


formato
Tamaño
Tiempo
original
1459,978240
rar a -m5
1212,932751
48m 21s
7z a -m0=LZMA2 -mx=9 -md=32m
1159,129496
34m 24s


Puede que valga la pena hacer un estudio sobre el .7z para ver la relación entre a) tamaño de diccionario, b) compresión obtenida, c) tiempo de ejecución.