我在 c# 中使用 SevenZipSharp 库在内存中解压 .gz 文件,遇到了一个奇怪的行为,文件大小增长了 2-3 倍,解压时间明显延长。更具体地说,.gz 文件的平均大小在 40MB 左右(解压时为 700-800MB),解压时间最多在几十秒左右。但是解压这个 90MB 大小的特定 .gz 文件(解压时为 1.6GB)花了半个多小时。每个 .gz 文件最初是通过 7-zip 从单个 txt 文件压缩而来的。我附上了代码:
for (int i = 0; i < fileNames.Length; i++)
{
using (FileStream fs = File.OpenRead(fileNames[i]))
{
using (var sze = new SevenZip.SevenZipExtractor(fs))
{
MemoryStream mem = new MemoryStream();
sze.ExtractFile(0, mem);
using (StreamReader sr = new StreamReader(mem))
{
// do something
}
}
}
}
知道为什么减压时间在这里爆炸吗?这仅仅是与调整内存流大小相关的开销吗?