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.