2

Je ne peux pas savoir exactement quel est le streaming mode proposé par les algorithmes de compression/décompression modernes (par exemple ZStandard ou LZ4) et comment je peux l'exploiter. Par exemple, supposons que je possède un fichier 4x16KB. Je peux (individuellement) comprimer chaque fichier et obtenir des fichiers 4xDifferentCompressedLength. Cependant, je pourrais compresser tous les 4 fichiers ensemble (en les envoyant séquentiellement, non?) En utilisant le mode de streaming et obtenir 1xCompressedLength et attendre le taux de compression pour être meilleur. Puis-je décompresser (disons) seulement le 3ème fichier sans décompresser tous les fichiers précédents? Est-ce que mode de diffusion introduire la dépendance entre les fichiers que j'ai ajoutés?Mode streaming vs mode bloc

Répondre

2

Oui, le streaming introduit une dépendance entre les fichiers. Dans votre exemple, décoder file3 nécessiterait de décoder d'abord file1 puis file2.

Notez également que les données apparaîtront en annexe, sans marqueur spécifique entre les fichiers. Donc, il faudrait un moyen de savoir où chaque fichier commence et se termine si c'est important. Parfois, il est implicite (ex: taille fixe de 16 Ko), parfois il peut être déduit des données lui-même (fin spécifique de la marque), parfois il a besoin de métadonnées supplémentaires. Tout dépend de l'application.

Vous avez raison de dire que le taux de compression de C(4xFiles) devrait être meilleur que 4xC(File), surtout si les 4 fichiers sont liés (par exemple s'ils sont tous des fichiers texte).

+1

Merci (Yann). Belle fonctionnalité pour transférer (diffuser) des données avec un meilleur taux de compression. – xmas79