Багатопотокові налаштування для архівів Unix у C#

Огляд

XZ, Bzip2 і Lzip поширені в Linux. Завдяки блочній структурі їх можна стискати в кілька потоків. API Aspose.ZIP надає властивості CompressionThreads для всіх з них, щоб використовувати кілька ядер ЦП під час стиснення. Встановлення значення більше ніж один передбачає багатоядерне стиснення; Залишивши його один - параметр за замовчуванням - призводить до стиснення з одним ядром ЦП.

Багатопотокове стиснення XZ

У XzArchiveSettings є властивість CompressionThreads. У наступному прикладі коду показано, як стиснути файл за допомогою екземпляра XzArchive.

Кроки: створіть багатопотоковий архів XZ за допомогою C#

  1. Відкрийте потік файлів для архіву XZ за допомогою FileMode.Create, щоб записати стислі дані.
  2. Відкрийте вихідний файл (data.bin) за допомогою FileMode.Open і встановіть його як дані для стиснення.
  3. Створіть екземпляр XzArchiveSettings, вказавши: — CheckType як Crc32 для перевірки цілісності. — CompressionThreads встановлено на 4 для багатопотокового стиснення.
  4. Створіть екземпляр XzArchive, передавши налаштування, створені вище.
  5. Використовуйте SetSource, щоб призначити вихідний файл для стиснення.
  6. Збережіть стислий архів XZ за допомогою методу Save
 1за допомогою (FileStream xzFile = File.Open("archive.xz", FileMode.Create))
 2{
 3    за допомогою (джерело FileStream = File.Open("data.bin", FileMode.Open, FileAccess.Read))
 4    {
 5        var settings = new XzArchiveSettings() { CheckType = XzCheckType.Crc32, CompressionThreads = 4 };
 6        за допомогою (var archive = new XzArchive(settings))
 7        {
 8            archive.SetSource(джерело);
 9            archive.Save(xzFile);
10        }
11    }
12}

Багатопотокове стиснення Bzip2

У Bzip2SaveOptions є властивість CompressionThreads. У наведеному нижче прикладі коду показано, як стиснути файл за допомогою екземпляра Bzip2Archive.

Кроки: створіть архів Bzip2 із максимальним стисненням і багатопотоковістю за допомогою C#< /strong>

  1. Відкрийте потік файлів для архіву Bzip2 за допомогою FileMode.Create, щоб зберегти стиснений вихід.
  2. Відкрийте вихідний файл (data.bin) за допомогою FileMode.Open і FileAccess.Read для читання нестиснених даних.
  3. Створіть екземпляр Bzip2Archive і використовуйте метод SetSource, щоб призначити вихідний файл для стиснення.
  4. Використовуйте метод 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.

Кроки: Створіть архів Lzip із спеціальним розміром словника та багатопотоковістю за допомогою C# 1. Відкрийте потік файлів для архіву Lzip за допомогою FileMode.Create, щоб створити стиснутий вихідний файл. 2. Відкрийте вихідний файл (data.bin) за допомогою FileMode.Open і FileAccess.Read для читання нестиснених даних. 3. Створіть екземпляр LzipArchiveSettings, вказавши розмір словника 16777216 байт (16 МБ) і ввімкнувши багатопотоковість із CompressionThreads = 4. 4. Створіть екземпляр LzipArchive із параметрами, визначеними вище. 5. Використовуйте SetSource, щоб призначити вихідний файл для стиснення. 6. Стисніть і збережіть архів методом Save, передавши вихідний потік файлів Lzip.

 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    }

У всіх зразках використовуються чотири нитки.

Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.