日期:2014-05-17  浏览次数:20579 次

ASP.net使用7z.dll压缩文件很慢..
最近在做一个导出功能,文件生成成功后,将文件压缩成1个文件提供下载.
因为导出的文件非常多,所以在这里压缩耗时非常久,但是在本地用好压压缩7z的格式只要两三秒..

这里是我的压缩跟解压缩的代码
public void Zip7(string directory, string targetFile ,string libFile)
    {
        SevenZip.SevenZipCompressor.SetLibraryPath(libFile);
        SevenZip.SevenZipCompressor szip = new SevenZip.SevenZipCompressor();
        szip.CompressDirectory(directory, targetFile);
    }
    public void UnZip7(string directory, string targetFile, string libFile)
    {
        SevenZip.SevenZipExtractor.SetLibraryPath(libFile);
        SevenZip.SevenZipExtractor szip = new SevenZip.SevenZipExtractor(directory);
        szip.ExtractArchive(targetFile);
    }
引用了两个动态链接库7z.dll和SevenZipSharp.dll,在c#上面解压十几秒,ASP.net要二十几秒
然后压缩2000多个小文件要将近两分钟,而且这期间发布的计算机上w3wp.exe进程CPU 为100%.网上说是出现了死循环,有没有朋友能解析下我这里出了什么问题的..
ASP.NET 压缩 7z.dll? sevenZipSharp.dll C#

------解决方案--------------------
szip.CompressionMethod = CompressionMethod.Lzma;
szip.CompressionLevel = CompressionLevel.Fastest;  //不知压缩是不是会快点呢?
不知道对不对,
这里有个多线程压缩
http://www.25175.com/200609/25175/25175_html/2010-12/4128.html
看看能不能帮助到你

------解决方案--------------------
我感觉7Z基本就这速度,没问题的。

要不你试一下.NET自带的GZip, 速度很好,就是只能压文件,要把目录转换先