Настройки многопоточности для архивов Unix в C#
Обзор
XZ, Bzip2 и Lzip широко распространены в Linux. Благодаря своей блочной структуре их можно сжимать в несколько потоков. API Aspose.ZIP предоставляет свойства CompressionThreads для всех из них, чтобы использовать несколько ядер ЦП при сжатии. Установка более одного значения влечет за собой многоядерное сжатие; если оставить его одним (опция по умолчанию), это приведет к сжатию с использованием одного ядра ЦП.
Многопоточное сжатие XZ
В XzArchiveSettings
есть свойство
CompressionThreads.
В следующем примере кода показано, как сжать файл с помощью экземпляра XzArchive.
Шаги: Создайте архив XZ с многопоточным сжатием на C# </а>
- Откройте поток файлов для архива XZ, используя FileMode.Create для записи сжатых данных.
- Откройте исходный файл (data.bin) с помощью FileMode.Open и установите его в качестве данных для сжатия.
- Создайте экземпляр XzArchiveSettings, указав: — CheckType как Crc32 для проверки целостности. — Для CompressionThreads установлено значение 4 для многопоточного сжатия.
- Создайте экземпляр XzArchive, передав созданные выше настройки.
- Используйте SetSource, чтобы назначить исходный файл для сжатия.
- Сохраните сжатый архив XZ методом Save.
1используя (FileStream xzFile = File.Open("archive.xz", FileMode.Create))
2{
3 используя (Источник FileStream = File.Open("data.bin", FileMode.Open, FileAccess.Read))
4 {
5 настройки вар = новый XzArchiveSettings () {CheckType = XzCheckType.Crc32, CompressionThreads = 4};
6 используя (var archive = новый XzArchive (настройки))
7 {
8 архив.SetSource(источник);
9 архив.Сохранить(xzFile);
10 }
11 }
12}
Многопоточное сжатие Bzip2
В Bzip2SaveOptions
есть свойство
CompressionThreads.
В следующем примере кода показано, как сжать файл с помощью экземпляра Bzip2Archive.
Шаги: Создайте архив Bzip2 с максимальным сжатием и многопоточностью на C#< /strong></а>
- Откройте поток файлов для архива Bzip2 с помощью FileMode.Create для хранения сжатых выходных данных.
- Откройте исходный файл (data.bin) с помощью FileMode.Open и FileAccess.Read для чтения несжатых данных.
- Создайте экземпляр Bzip2Archive и используйте метод SetSource, чтобы назначить исходный файл для сжатия.
- Используйте метод Save, чтобы сжать данные в архив Bzip2, передав:
- Bzip2SaveOptions(9) для установки максимального уровня сжатия. — Установите для CompressionThreads значение 4 для многопоточного сжатия.
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 }
Многопоточное сжатие Lzip
В XzArchiveSettings
есть свойство
CompressionThreads.
В следующем примере кода показано, как сжать файл с помощью экземпляра XzArchive.
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 }
Во всех примерах используются четыре потока.