C# 为700 GB文件使用密码时Zip进程耗时过长
我对一个700 GB的文件使用了下面没有密码选项的代码,它运行得非常快(大约4小时)。使用7ZIP进行完全相同的尝试大约需要2天时间。但是,当我添加password选项时,它只显示正在创建的zip文件的零字节。下面的代码(特定于密码)有什么问题吗?如果指定了密码,下面的代码是否会运行得更快C# 为700 GB文件使用密码时Zip进程耗时过长,c#,dotnetzip,C#,Dotnetzip,我对一个700 GB的文件使用了下面没有密码选项的代码,它运行得非常快(大约4小时)。使用7ZIP进行完全相同的尝试大约需要2天时间。但是,当我添加password选项时,它只显示正在创建的zip文件的零字节。下面的代码(特定于密码)有什么问题吗?如果指定了密码,下面的代码是否会运行得更快 string password = "uG9GHi@4"; Console.WriteLine("txtFileInPath 991 :" + txtFileInPath); Console.WriteLi
string password = "uG9GHi@4";
Console.WriteLine("txtFileInPath 991 :" + txtFileInPath);
Console.WriteLine("zipFileOutPath :" + zipFileOutPath);
Console.WriteLine("Password :" + password);
Console.WriteLine("running :" + DateTime.Now);
using (ZipFile zip = new ZipFile())
{
zip.UseZip64WhenSaving = Zip64Option.Always;
zip.CompressionLevel = Ionic.Zlib.CompressionLevel.BestCompression;
//zip.Password = password;
Console.WriteLine("Before AddFile :" + DateTime.Now);
zip.AddFile(txtFileInPath, "").Password = password;
Console.WriteLine("After AddFile :" + DateTime.Now);
Console.WriteLine("Before zip.Save :" + DateTime.Now);
zip.Save(zipFileOutPath);
Console.WriteLine("After zip.Save :" + DateTime.Now);
}
Console.WriteLine("End :" + DateTime.Now);
加密确实需要很多时间。至于7Zip,如果启用并行处理,则使用所有可用的内核,其执行速度要快得多。如果DotNetZip不允许并行处理,您可能必须购买商业版本。我相信DotNetZip已经完成了所需的并行处理(无代码更改)。使用不带密码的DotNetZip进行加密的速度非常快,但是,当添加密码时,速度会变得非常慢。如果使用
zip.encryption=EncryptionAlgorithm.WinZipAes256
,有什么不同吗?我确实尝试过,速度更快……但仍然不理想。不带密码压缩700 GB的文件需要约5个小时(164 GB的结果文件)。