我的问题可以用以下陈述来描述:
由于我是压缩/解压缩的新手,我对如何做到了如下:
我可以使用将文件拆分成块并分别压缩它们。然后将它们合并回一个完整的压缩文件。
关于这种方法的问题1 - 压缩多个块然后将它们合并在一起会给我正确的结果,即如果我要反转过程(从压缩文件开始,再回到解压缩) )我会收到相同的原始输入吗?
关于此方法的问题2 - 这种方法对您有意义吗?也许你可以指导我做一些关于这个主题的好讲座?不幸的是我自己找不到任何东西。
答案 0 :(得分:2)
您不需要压缩压缩只是为了限制内存使用量。 gzip被设计成流式格式,需要大约256KB的RAM来压缩。数据的大小无关紧要。输入可以是一个字节,20 GB或100 PB - 压缩仍然只需要256 KB的RAM。您只需读取未压缩的数据,然后将压缩数据写入完成。
在绘制图表时将输入分块的唯一原因是使用多个内核进行压缩。这是您的数据量的一个非常好的理由。然后你就可以完全按照你的描述去做。只要您按正确的顺序组合输出,解压缩就会重现原始输入。您始终可以连接有效的gzip流以生成有效的gzip流。我建议你把块放得比较大,例如兆字节,因此压缩不会受到分块的显着影响。
减压不能以这种方式分块,但速度要快得多,所以即使可以,也几乎没有任何好处。解压缩通常是i / o绑定。