Comment la "taille du dictionnaire" affecte-t-elle la compression?

39

Je sais qu'une taille plus grande peut conduire à un meilleur taux de compression et vice-versa. Mais y a-t-il un moyen de mieux décider? .. car il y a tellement de choix 7zip


Jusqu'ici, j'ai remarqué que la taille du dictionnaire ≈ la taille du fichier permettait une compression optimale. taille du fichier
Ici, le fichier 8mb test.avia le même taux de compression pour toutes les tailles de dictionnaire supérieures à 8mb. Puis ça commence à tomber.

réflexe de retard
la source
2
Oui, c'est parce que tout le fichier est en mémoire. Cependant, cela peut ne pas être possible si vous traitez avec des fichiers de plusieurs concerts. Plus vous montez, plus le retour sur investissement diminue. Si vous avez besoin de ce dernier 1%, alors taille = taille du fichier. Remarque: lorsque vous avez un ensemble de données beaucoup plus volumineux, une taille de dictionnaire de 128 Mo + augmentera considérablement le temps nécessaire à la compression des fichiers.
Cybernard

Réponses:

28

Les éléments reproductibles sont stockés dans un dictionnaire et un code est attribué en remplacement.

CECI EST UNE SIMPLIFICATION PLUS

aaaaaaaaaaaaaaaaaaaaaaaa  0001
bbbbbbbbbbbbbbbbbbbbbbbb  0002
alsdjl;asjdfkl;asdfjkljj  0003

au lieu de toute la ligne, il suffit de mettre le code à sa place. Plus le dictionnaire est volumineux, plus il peut gérer de codes. Normalement, lorsqu'un dictionnaire est plein, il en commence un nouveau à la volée. Lorsqu'il en commence un nouveau, il est vide et de nouveaux codes sont attribués aux modèles détectés.

En règle générale, le plus grand est le mieux jusqu'à un point. Le dictionnaire entier est conservé en mémoire, vous avez donc besoin de plus de RAM que la taille du dictionnaire.

La taille du dictionnaire dépend de la compressibilité de vos données, du nombre de fichiers, de la taille et de la taille globale.

En règle générale, 32 Mo suffisent amplement, mais si vous compressez plusieurs fichiers de plusieurs concerts, vous pouvez utiliser un nombre beaucoup plus élevé. Les grands dictionnaires ralentissent souvent le processus, mais les résultats sont dans un fichier plus petit.

cybernard
la source
2
La taille que vous définissez est-elle une limite pour la taille du dictionnaire ou sa taille réelle? Est-ce que les programmes (7-zip en particulier) déterminent normalement de manière intelligente s'ils ont vraiment besoin de remplir tout le dictionnaire que vous avez autorisé?
Stan
1
Oui, c'est une limite. Quand ils sont pleins, ils commencent soit un nouveau dictionnaire, soit extraient intelligemment les anciennes données. À moins que les données à compresser soient supérieures à la taille du dictionnaire, elles seront remplies.
Cybernard
@cybernard "ça va être rempli"? Pour être clair, la taille du dictionnaire reste-t-elle inférieure à la limite quand il n'est pas rempli?
LonnieBest
1
@LonnieBest Oui, le dictionnaire est complètement vide au début. Chaque nombre de bits / octets crée une nouvelle entrée de dictionnaire jusqu'à ce qu'il soit plein.
cybernard le