¿Cómo afecta el "tamaño del diccionario" a la compresión?

39

Sé que un mayor tamaño puede conducir a una mejor relación de compresión y viceversa. Pero, ¿hay alguna manera de decidir mejor? ... ya que hay tantas opciones 7zip


Hasta ahora he notado que el tamaño del diccionario ≈ tamaño del archivo produce una compresión óptima. tamaño del archivo
Aquí el archivo ∼8mb test.avitiene la misma relación de compresión para todos los tamaños de diccionario superiores a 8mb. Entonces comienza a caer.

laggingreflex
fuente
2
Sí, eso es porque todo el archivo está en la memoria. Sin embargo, esto puede no ser posible si se trata de archivos de varios conciertos. El retorno de la inversión disminuye cuanto más alto vayas. Si necesita ese último 1%, entonces tamaño = tamaño de archivo. Nota: Cuando tiene un conjunto de datos mucho más grande, un tamaño de diccionario de 128 MB aumentará el tiempo necesario para comprimir archivos de manera significativa.
cybernard el

Respuestas:

28

Los elementos repetibles se almacenan en un diccionario y se asigna un código como sustituto.

ESTA ES UNA SIMPLIFICACIÓN SUPERIOR

aaaaaaaaaaaaaaaaaaaaaaaa  0001
bbbbbbbbbbbbbbbbbbbbbbbb  0002
alsdjl;asjdfkl;asdfjkljj  0003

en lugar de la línea completa, simplemente puso el código en su lugar. Cuanto más grande es el diccionario, más códigos puede manejar. Normalmente, cuando un diccionario se llena, comienza uno nuevo sobre la marcha. Cuando comienza uno nuevo, está en blanco y se asignan nuevos códigos a los patrones detectados.

En general, cuanto más grande, mejor hasta cierto punto. Todo el diccionario se guarda en la memoria, por lo que necesita más RAM que el tamaño del diccionario.

El tamaño del diccionario depende de la compresibilidad de sus datos, la cantidad de archivos, el tamaño y el tamaño general.

En general, 32 MB es más que suficiente, pero si está comprimiendo numerosos archivos de varios conciertos, se puede usar un número mucho mayor. Los diccionarios más grandes a menudo hacen que el proceso sea más lento, pero los resultados en un archivo más pequeño.

cybernard
fuente
2
¿Es el tamaño que establece un límite para el tamaño del diccionario, o el tamaño real que será? ¿Los programas (7-zip en particular) normalmente determinan de manera inteligente si realmente necesitan llenar todo el diccionario que has permitido?
Stan
1
Sí, es un límite. Cuando están llenos, inician un nuevo diccionario o eliminan de manera inteligente los datos antiguos. A menos que los datos a comprimir sean mayores que el tamaño del diccionario, se rellenará.
cybernard
@cybernard "se llenará"? Para ser claros, ¿el tamaño del diccionario permanece por debajo del límite cuando no se llena?
LonnieBest
1
@LonnieBest Sí, el diccionario comienza completamente vacío. Cada tantos bits / bytes crea una nueva entrada de diccionario hasta que se llena.
cybernard