gpt4 book ai didi

lzma - LZMA压缩设置详细信息

转载 作者:行者123 更新时间:2023-12-02 11:22:00 26 4
gpt4 key购买 nike

我真的需要知道每个lzma参数(mf,fb,lp,...)的含义。我在互联网上找不到任何好的文档。我需要此算法的详细信息。最详细的是:
http://www.bugaco.com/7zip/MANUAL/switches/method.htm
我将不胜感激任何帮助。

最好的祝愿,
沙迪

最佳答案

根据Wikipedia no complete natural language specification of the compressed format seems to exist。但是,指定了配置设置。

在使用LZMA SDK的过程中,我发现了以下压缩设置CLzmaEncPropsCLzma2EncProps结构类型:

LZMA选项:

水平


说明:压缩级别。
范围:[0; 9]。
默认值:5


dictSize


说明:字典大小。
范围:32-bit版本为[1 << 12; 1 << 27]或64-bit版本为[1 << 12; 1 << 30]。
默认值:1 << 24。


lc


说明:前一个字节的高位位数,用作文字编码的上下文。
范围[0; 8]。
默认值:3
有时lc = 4会使大文件受益。


lp


说明:要包含在literal_pos_state中的字典位置的低位数。
范围:[0; 4]。
默认值:0
当期间等于2 ^ value(其中lp = value)时,它用于定期数据。例如,对于32位(4字节)定期数据,您可以使用lp = 2。如果更改lp开关,通常最好设置lc = 0。





说明:pb是要包含在pos_state中的字典位置的低位位数。
范围:[0; 4]。
默认值:2
当期间等于2 ^ value(其中lp = value)时,它用于定期数据。


算法


说明:设置压缩模式。
选项:0 =快速,1 =正常。
默认值:1。


fb


说明:设置Deflate / Deflate64编码器的快速字节数。
范围:[5; 255]。
默认值:128
通常,较大的数字会带来更好的压缩率和较慢的压缩过程。大的快速字节参数可以大大提高文件的压缩率,这些文件包含相同的长字节序列。


btMode


说明:为LZMA设置匹配查找器。
选项:0 = hashChain模式,1 = binTree模式。
默认值:1。
默认方法是bt4。 hc *组的算法不能提供良好的压缩率,但是与快速模式结合使用时,它们的工作速度通常非常快。


numHashBytes


描述:哈希字节数。有关详细信息,请参见mf={MF_ID}部分here
选项:2、3或4。
默认值:4。


mc


说明:设置匹配查找器的循环次数(通过)。
范围:[1; 1 << 30]。
默认值:32
如果指定mc = 0,则LZMA将使用默认值。通常,较大的数字会带来更好的压缩率和较慢的压缩过程。例如,mf = HC4和mc = 10000可提供与mf = BT4几乎相同的压缩比。


writeEndMark


说明:用于写入或不写入结束标记的选项。
选项:0-不写EOPM,1-写EOPM。
默认值:0


numThreads


描述:线程数。
选项:1或2
默认值:2


LZMA2选项:

LZMA2LZMA的修改版本。与LZMA相比,它具有以下优点:


比无法压缩的数据具有更好的压缩率。 LZMA2
可以以未压缩的形式存储此类数据块。还可以
更快地解压缩此类数据。
更好的多线程支持。如果压缩大文件,LZMA2可以将该文件拆分为多个块,然后在多个线程中压缩这些块。


注意:LZMA2也支持所有LZMA参数,但是lp + lc不能大于4

块大小


描述:设置块大小。
默认值:dictSize * 4。


numBlockThreads


说明:设置每个块(块)的线程数。


numTotalThreads


说明:LZMA2可以使用的最大线程数。


注意:LZMA2使用:在x1x3模式下每个块有1个线程;在x5x7x9模式下每个块有2个线程。如果将LZMA2设置为仅使用一个块所需的线程数量,则不会将流拆分为多个块。因此,对于不同数量的线程,您可以获得不同的压缩率。

我认为,为了获得有关此主题的更多信息,您必须更深刻地研究LZMA。互联网上很少有关于它的示例,并且文档还很不完整。

更多信息在这里:

http://sevenzip.sourceforge.jp/chm/cmdline/switches/method.htm

http://en.wikipedia.org/wiki/Lempel%E2%80%93Ziv%E2%80%93Markov_chain_algorithm

http://linux.die.net/man/1/lzma

关于lzma - LZMA压缩设置详细信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3057171/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com