LZMA压缩设置详细信息

Sha*_*adi 3 lzma

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

祝愿,Shadi.

Jac*_*ieg 13

根据维基百科 no complete natural language specification of the compressed format seems to exist.但是,指定了配置设置.

在我的工作中,LZMA SDK我发现了以下压缩设置CLzmaEncPropsCLzma2EncProps结构类型:

LZMA选项:

水平

  • 描述:压缩级别.
  • 范围:[0; 9].
  • 默认值:5.

dictSize

  • 描述:字典大小.
  • 范围:版本的[1 << 12; 1 << 27] 32-bit或版本的[1 << 12; 1 << 30] 64-bit.
  • 默认值:1 << 24.

LC

  • 描述:前一个字节的高位数,用作文字编码的上下文.
  • 范围[0; 8].
  • 默认值:3
  • 有时lc = 4可以获得大文件的增益.

唱片

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

PB

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

ALGO

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

FB

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

btMode

  • 说明:为LZMA设置匹配查找器.
  • 选项:0 = hashChain模式,1 = binTree模式.
  • 默认值:1.
  • 默认方法是bt4.来自hc*group的算法不能提供良好的压缩比,但它们通常与快速模式结合使用得非常快.

numHashBytes

  • 描述:哈希字节数.见mf={MF_ID}在这里了解详情.
  • 选项: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选项:

LZMA2是修改版的LZMA.它具有以下优点LZMA:

  1. 数据的压缩率比无法压缩的更好.LZMA2 可以以未压缩的形式存储这些数据块.它还可以更快地解压缩这些数据.
  2. 更好的多线程支持.如果压缩大文件,LZMA2可以将该文件拆分为块并在多个线程中压缩这些块.

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

BLOCKSIZE

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

numBlockThreads

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

numTotalThreads

  • 描述:LZMA2可以使用的最大线程数.

注意: LZMA2使用:每个块中的1个线程x1x3模式; 和2个线程在每个块x5,x7x9模式.如果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