流模式与块模式

时间:2017-06-07 21:52:51

标签: compression data-compression lossless-compression

我无法弄清楚现代压缩/解压缩算法(例如ZStandard或LZ4)提供的流模式究竟是什么以及我如何利用它。

例如,假设我有4x16KB个文件。我可以(单独)压缩每个文件并获取4xDifferentCompressedLength个文件。但是我可以使用流模式将所有4个文件压缩在一起(顺序发送,对吗?)并获得1xCompressedLength并期望压缩率更好。

我可以解压缩(比如说)第三个文件而不解压缩所有以前的文件吗? 流模式是否会在我附加的文件之间引入依赖关系?

1 个答案:

答案 0 :(得分:2)

是的,流媒体引入了文件之间的依赖关系。 在您的示例中,解码file3需要首先解码file1然后解码file2

另请注意,数据将显示为附加,文件之间没有特定标记。因此,如果重要的话,需要一种方法来了解每个文件的开始和结束位置。有时它是隐式的(例如:固定的16KB大小),有时它可以从数据本身(特定的标记结束)中扣除,有时它需要额外的元数据。这一切都取决于应用程序。

你是正确的,C(4xFiles)的压缩率预计会好于4xC(File),特别是如果4个文件有些相关(例如,如果它们都是文本文件)。