提取.zip存档的最快方法

时间:2011-04-13 10:48:16

标签: c# .net zip extract performance

哪种提取.zip档案的最快方法?我的应用程序的性能很大程度上取决于提取的.zip文件的速度。我正在使用dotNetzip atm,但似乎可以有更快的工具。如果有,他们安全吗?我听说QuickLZ是最快的,但还没有测试过,还没有找到任何代码示例或如何在c#中使用它。任何帮助都会受到极大关注。

4 个答案:

答案 0 :(得分:1)

如果将项目升级到.NET 4.5是一个选项,那么您可以使用ZipArchive类。 I wrote an article使用它,这很简单。还有ZipFileI also wrote about,甚至更容易。但是我无法评论性能,因为我没有使用第三方库来存档ZIP文件。

答案 1 :(得分:0)

使用DotNetZip库,只需使用ExtractAll()方法即可提取所有文件:)

答案 2 :(得分:0)

做我们自己的测试,到目前为止,7-zip CLI(exe文件)是最快的。 CLI应用程序的性能胜过所有这些.NET dll,这听起来很疯狂,但不幸的是,事实就是如此。

准确地说,我已经使用ZipFile和ZipArchive测试了SharpCompress,SharpZipLib,DotNetZip和.NET自己的实现。对于我们的测试文件,所有这些文件的运行时间都在10到20秒左右,但是7-zip的exe进程通常在7到8秒钟时完成。

如果您决定使用7-zip,这是示例代码:

    private static void ExtractWith7Zip(string archivePath, string extractPath)
    {
        var info = new ProcessStartInfo
        {
            FileName = @"C:\Program Files\7-Zip\7z.exe",
            Arguments = $"x -y -o\"{extractPath}\" \"{archivePath}\"",
            WindowStyle = ProcessWindowStyle.Hidden,
            CreateNoWindow = true,
            UseShellExecute = false,
            RedirectStandardOutput = true
        };

        Process.Start(info)?.WaitForExit();
    }

答案 3 :(得分:-1)

您的zip文件有多大?也许您可以利用现代多核处理器,将原始文件拆分为多个部分,独立压缩每个部分,然后使用多线程在应用程序中解压缩它们。与解压缩时间相比,重新组合内存中文件的时间会很短。