and*_*ree 7 .net c# performance zip extract
提取 .zip 档案的最快方法是什么?我的应用程序的性能很大程度上取决于 .zip 文件的提取速度。我正在使用 dotNetzip atm,但似乎可以有更多更快的工具。如果有,它们安全吗?我听说 QuickLZ 是最快的,但还没有测试过,也没有找到任何代码示例或如何在 c# 中使用它。任何帮助将大大appriciated。
根据我们自己的测试,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 文件有多大?也许您可以利用现代多核处理器,将原始文件分成几个部分,独立压缩每个部分,然后使用多线程将它们解压缩到您的应用程序中。与解压缩时间相比,在内存中重新组合文件的时间会很短。