Багатопотокові налаштування для архівів 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 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>
- Відкрийте потік файлів для архіву 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.
Кроки: Створіть архів 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 }
У всіх зразках використовуються чотири нитки.