Multithread settings for Unix Archives in C#
Overview
XZ,
Bzip2 and
Lzip are common in Linux. Due to their block structure they can be compressed in several threads. Aspose.ZIP API provides CompressionThreads
properties for all of them to utilize several CPU cores on compression. Setting it to more than one entails multi core compression; leaving it one - the default option - leads to compression with single CPU core.
XZ multithreaded compression
There is
CompressionThreads property in XzArchiveSettings
.
The following code example shows how to compress a file using XzArchive instance.
1using (FileStream xzFile = File.Open("archive.xz", FileMode.Create))
2{
3 using (FileStream source = File.Open("data.bin", FileMode.Open, FileAccess.Read))
4 {
5 var settings = new XzArchiveSettings() { CheckType = XzCheckType.Crc32, CompressionThreads = 4 };
6 using (var archive = new XzArchive(settings))
7 {
8 archive.SetSource(source);
9 archive.Save(xzFile);
10 }
11 }
12}
Bzip2 multithreaded compression
There is
CompressionThreads property in Bzip2SaveOptions
.
The following code example shows how to compress a file using Bzip2Archive instance.
1using (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 multithreaded compression
There is
CompressionThreads property in XzArchiveSettings
.
The following code example shows how to compress a file using XzArchive instance.
1using (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}
Four threads are used in all samples.