L'utilisation la plus simple des chaînes de filtres personnalisées est la personnalisation d'un préréglage LZMA2. Cela peut être utile, car les préréglages ne couvrent qu'un sous-ensemble des réglages de compression potentiellement utiles.
Les colonnes CompCPU des tableaux des descriptions des options -0 à -9 et --extreme sont utiles lors de la personnalisation des préréglages LZMA2. Voici les parties pertinentes recueillies à partir de ces deux tableaux :
| Préréglage | CompCPU |
| -0 | 0 |
| -1 | 1 |
| -2 | 2 |
| -3 | 3 |
| -4 | 4 |
| -5 | 5 |
| -6 | 6 |
| -5e | 7 |
| -6e | 8 |
If you know that a file requires somewhat big dictionary (for example, 32 MiB) to compress well, but you want to compress it quicker than xz -8 would do, a preset with a low CompCPU value (for example, 1) can be modified to use a bigger dictionary:
xz --lzma2=preset=1,dict=32MiB toto.tar
Avec certains fichiers, la commande ci-dessus peut être plus rapide que xz-6 tout en compressant bien mieux. Cependant, il faut souligner que seuls certains fichiers bénéficient d'un grand dictionnaire tout en gardant la valeur de CompCPU faible. La siutation la plus évidente où un gros dictionnaire peut baucoup aider, est une archive contenant des fichiers très similaires de quelques megaoctets chacun. La taille de dictionnaire doit être significativement plus grosse que tout fichier individuel pour permettre à LZMA2 de tirer pleinement partie des similarités entre des fichiers consécutifs.
Si une utilisation de la mémoire élevée pour la compression et décompression convient, et que le fichier à compresser a une taille de plusieurs centaines de megaoctets, il peut être utile d'utiliser un plus gros dictionnaire que celui fourni par xz-9 (64 Mio) :
xz -vv --lzma2=dict=192MiB gros_toto.tar
Utiliser -vv (--verbose--verbose) comme dans l'exemple ci-dessus peut être utile pour voir les besoins en mémoire du compresseur et du décompresseur. Rappelez-vous qu'utiliser un dictionnaire plus gros que la taille du fichier non compressé est un gachis de mémoire, donc la commande ci-dessus n'est pas utile pour les petits fichiers.
Sometimes the compression time doesn't matter, but the decompressor memory usage has to be kept low, for example, to make it possible to decompress the file on an embedded system. The following command uses -6e (-6 --extreme) as a base and sets the dictionary to only 64 KiB. The resulting file can be decompressed with XZ Embedded (that's why there is --check=crc32) using about 100 KiB of memory.
xz --check=crc32 --lzma2=preset=6e,dict=64KiB toto
If you want to squeeze out as many bytes as possible, adjusting the number of literal context bits (lc) and number of position bits (pb) can sometimes help. Adjusting the number of literal position bits (lp) might help too, but usually lc and pb are more important. For example, a source code archive contains mostly US-ASCII text, so something like the following might give slightly (like 0.1 %) smaller file than xz -6e (try also without lc=4):
xz --lzma2=preset=6e,pb=0,lc=4 code_source.tar
Using another filter together with LZMA2 can improve compression with certain file types. For example, to compress a x86-32 or x86-64 shared library using the x86 BCJ filter:
xz --x86 --lzma2 libtoto.so
Notez que l'ordre des options de filtre est significatif. Si --x86 est indiqué après --lzma2, xz donnera une erreur, car il ne peut y avoir aucun filtre après LZMA2, et aussi parce que le filtre BCJ x86 ne peut pas être utilisé comme dernier filtre dans la chaîne.
Le filtre Delta associé à LZMA2 peut donner de bons résultats avec les images bitmap. Cela devrait habituellement battre PNG, qui a quelques filtres avancés supplémentaires qu'un simple delta, mais qui utilise Deflate pour la compression effective.
The image has to be saved in uncompressed format, for example, as uncompressed TIFF. The distance parameter of the Delta filter is set to match the number of bytes per pixel in the image. For example, 24-bit RGB bitmap needs dist=3, and it is also good to pass pb=0 to LZMA2 to accommodate the three-byte alignment:
xz --delta=dist=3 --lzma2=pb=0 toto.tiff
If multiple images have been put into a single archive (for example, .tar), the Delta filter will work on that too as long as all images have the same number of bytes per pixel.