Quantcast
Channel: sevenzipsharp Issue Tracker Rss Feed
Viewing all articles
Browse latest Browse all 195

Created Unassigned: How to achieve same compression speed [14092]

$
0
0
I am looking for a fast way to create a .zip archive of a directory that contains a lot of small files (e.g. 25.4 MB, 8 directories and 4505 files, but could be larger).

When I use the standard 7zip Installation (via context menu) the compression takes 1 to 2 seconds.

When I use the SevenZipCompressor from the SevenZipSharp library to do the same in a C# application, it takes way longer (> 5 seconds).

__Now I am wondering what are the default parameters used by 7zip (or how could I find out, which parameters 7zip actually uses) and how can I set them in my code to achieve the same speed?__

For my application, the compression level is not as important as the speed.

Here is my code (I tried different compression levels and modes, but with no significant differences):

```
public Compressor()
{
var zipFile = @"pathTo7ZipDll\7z.dll";
if (File.Exists(zipFile))
{
SevenZipBase.SetLibraryPath(zipFile);
}
else
{
throw new ApplicationException("seven zip dll file not found!");
}

Zipper = new SevenZipCompressor
{
ArchiveFormat = OutArchiveFormat.Zip,
DirectoryStructure = true,
PreserveDirectoryRoot = true,
CompressionLevel = CompressionLevel.Fast,
CompressionMethod = CompressionMethod.Deflate
};


Zipper.FileCompressionStarted += (s, e) =>
{
if (IsCancellationRequested)
{
e.Cancel = true;
}
};

Zipper.Compressing += (s, e) =>
{
if (IsCancellationRequested)
{
e.Cancel = true;
return;
}

if (e.PercentDone == 100)
{
OnFinished();
}
else
{
Console.WriteLine($"Progress received: {e.PercentDone}.");
}
};

Zipper.CompressionFinished += (s, e) =>
{
OnFinished();
};
}

private void OnFinished()
{
IsProcessing = false;
IsCancellationRequested = false;
}

public void StartCompression()
{
IsProcessing = true;
Zipper.CompressDirectory(InputDir, OutputFilePath);
}
```

The original directory has a size of 26.678.577 Bytes.

The compressed .zip created with the c# code is 25.786.743 Bytes.
The compression takes ~6167 ms.

The compressed .zip created with the 7zip installation is 25.771.350 Bytes.

Viewing all articles
Browse latest Browse all 195

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>