提取 .zip 存档的最快方法

and*_*ree 7 .net c# performance zip extract

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

Mla*_* B. 5

根据我们自己的测试,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();
    }
Run Code Online (Sandbox Code Playgroud)


小智 -1

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