Paramètres multithread pour les archives Unix en C#
Aperçu
XZ, Bzip2 et Lzip sont courants sous Linux. Grâce à leur structure en blocs, ils peuvent être compressés en plusieurs threads. L’API Aspose.ZIP fournit des propriétés « CompressionThreads » pour que chacun d’entre eux puisse utiliser plusieurs cœurs de processeur lors de la compression. Le définir sur plusieurs un implique une compression multicœur ; en laisser un - l’option par défaut - conduit à une compression avec un seul cœur de processeur.
Compression multithread XZ
Il existe une propriété CompressionThreads dans « XzArchiveSettings ». L’exemple de code suivant montre comment compresser un fichier à l’aide de l’instance XzArchive.
Étapes : Créer une archive XZ de compression multithread en C#
- Ouvrez un flux de fichiers pour l’archive XZ à l’aide de FileMode.Create pour écrire les données compressées.
- Ouvrez le fichier source (data.bin) à l’aide de FileMode.Open et définissez-le comme données à compresser.
- Créez une instance de XzArchiveSettings, en spécifiant :
- CheckType comme Crc32 pour la vérification de l’intégrité.
- CompressionThreads défini sur 4 pour la compression multithread.
- Créez une instance de XzArchive en transmettant les paramètres créés ci-dessus.
- Utilisez SetSource pour attribuer le fichier source à la compression.
- Enregistrez l’archive XZ compressée à l’aide de la méthode Save
1en utilisant (FileStream xzFile = File.Open("archive.xz", FileMode.Create))
2{
3 en utilisant (source FileStream = File.Open("data.bin", FileMode.Open, FileAccess.Read))
4 {
5 var settings = new XzArchiveSettings() { CheckType = XzCheckType.Crc32, CompressionThreads = 4 } ;
6 en utilisant (var archive = new XzArchive (paramètres))
7 {
8 archive.SetSource(source);
9 archive.Save(xzFile);
10 }
11 }
12}
Compression multithread Bzip2
Il existe une propriété CompressionThreads dans “Bzip2SaveOptions”. L’exemple de code suivant montre comment compresser un fichier à l’aide de l’instance Bzip2Archive.
Étapes : Créer une archive Bzip2 avec une compression maximale et un multithreading en C#< /fort>
- Ouvrez un flux de fichiers pour l’archive Bzip2 à l’aide de FileMode.Create pour stocker la sortie compressée.
- Ouvrez le fichier source (data.bin) avec FileMode.Open et FileAccess.Read pour lire les données non compressées.
- Créez une instance de Bzip2Archive et utilisez la méthode SetSource pour attribuer le fichier source à la compression.
- Utilisez la méthode Save pour compresser les données dans l’archive Bzip2, en passant :
- Bzip2SaveOptions(9) pour définir le niveau de compression maximum.
- Définissez CompressionThreads sur 4 pour une compression multithread.
1 using (FileStream bz2File = File.Open("archive.bz2", FileMode.Create))
2 {
3 using (FileStream source = File.Open("data.bin", FileMode.Open, FileAccess.Read))
4 {
5 using (Bzip2Archive archive = new Bzip2Archive())
6 {
7 archive.SetSource(source);
8 archive.Save(bz2File, new Bzip2SaveOptions(9) { CompressionThreads = 4 });
9 }
10 }
11 }
Compression multithread Lzip
Il existe une propriété CompressionThreads dans « XzArchiveSettings ». L’exemple de code suivant montre comment compresser un fichier à l’aide de l’instance XzArchive.
Étapes : Créer une archive Lzip avec une taille de dictionnaire personnalisée et un multithreading en C# 1. Ouvrez un flux de fichiers pour l’archive Lzip à l’aide de FileMode.Create pour créer le fichier de sortie compressé. 2. Ouvrez le fichier source (data.bin) avec FileMode.Open et FileAccess.Read pour lire les données non compressées. 3. Créez une instance de LzipArchiveSettings, en spécifiant une taille de dictionnaire de 16777216 octets (16 Mo) et en activant le multithreading avec CompressionThreads = 4. 4. Créez une instance de LzipArchive avec les paramètres définis ci-dessus. 5. Utilisez SetSource pour attribuer le fichier source à la compression. 6. Compressez et enregistrez l’archive à l’aide de la méthode Save, en transmettant le flux du fichier Lzip de sortie.
1 using (FileStream lzFile = File.Open("archive.lz", FileMode.Create))
2 {
3 using (FileStream source = File.Open("data.bin", FileMode.Open, FileAccess.Read))
4 {
5 var settings = new LzipArchiveSettings(16777216) { CompressionThreads = 4 }
6 using (LzipArchive archive = new LzipArchive(settings))
7 {
8 archive.SetSource(source);
9 archive.Save(lzFile);
10 }
11 }
12 }
Quatre threads sont utilisés dans tous les échantillons.