Answers:
所述的Lempel-谢夫-韦尔奇(LZW)压缩算法本质上是计算密集的,大部分工作本身是实际计算字典。这实际上就是LZW的工作方式。
该算法本身会为其扫描的下一个“符号”添加一个新的词典条目,因此,在每次迭代中,都会向该词典中添加一个新条目。实际上,字典成为文件的压缩副本,因此实际上是LZW压缩首先花费大量时间进行计算的唯一方法。
如果您使用类似Huffman编码的方法,则确实可以重用字典(以可能的次优压缩率/大小为代价)。但是,大多数现代压缩算法和工具都使用LZW算法来提高效率和速度(霍夫曼压缩将需要对数据进行两次遍历(一次生成霍夫曼树/表,另一遍实际压缩数据),而LZW可以在单次通过)。
与DEFLATE算法不同,默认情况下7-Zip的LZMA使用固态压缩,这充分利用了文件间冗余。只要文件足够小,就可以使用默认设置。
使用Solid Block size的默认设置为2 GB时,实际上会将16 GB的文件压缩为8个单独的块。
正如@Breakthorugh所说,该词典是即时生成的。您可以通过将“ 实体块”大小设置为“ 实体”(一次压缩所有文件)和“ 非实体”(分别压缩每个文件)来凭经验进行验证。
增加Solid Block大小实际上会导致速度变慢,但可能会导致更好的压缩率。例如,压缩两个相同的文件将导致归档文件的大小几乎是非实体压缩文件的两倍。