2024年3月23日发(作者:)

Lzma的全称是Lempel-Ziv-Markov chain Algorithm,和bzip2/gzip一样,是一款

压缩/解压软件.它比bzip更加快速与高效。就我们所知, gzip压缩比率低于bzip2 (还有

lzma). 此文将介绍如何使用lzma, 一个有着更高压缩率和压缩速度的软件。 1.使用lzma

-c压缩输入的文本文件 $ lzma -c –stdout > 2.使用选项 -d

解压lzma文件 $ lzma -d –stdout > 比较bzip2 和 lzma 两

款压缩工具为了更加了解lzma的效率如何, 我们来分别使用lzma和bzip2压缩/解压一

个 1MB 的文本文件( ),然后比较一下结果如何. 此项测试使用的机器的RAM

为1GB,CPU为Pentium 4. 的大小: $ ls -l -rw-r–r– 1 bala

bala 1048576 2010-05-14 19:43 说明: 我们在每个压缩/解压命名前使用

time命令,来查看每次命令执行的CPU 使用情况. 使用bzip2压缩文件不使

用任何参数来用bzip2 压缩输入文件. $ time bzip2 real 0m27.874s

user 0m13.981s sys 0m0.148s $ ls -l 2 -rw-r–r– 1 bala

bala 1750 2010-05-14 [...]

LZMA,(Lempel-Ziv-Markov chain-Algorithm的缩写),是一个Deflate和LZ77

算法改良和优化后的压缩算法,开发者是Igor Pavlov

可以到[url]/[/url] 下载到SDK。

可以在LzmaLib.h找到压缩LzmaCompress与解压缩LzmaUncompress的接口说

明。

LZMA格式的解压,依赖Alloc.c , LzmaDec.c, LzmaLib.c,

LzmaLib.h ,Types.h ,LzmaDec.h ,Alloc.h这7个文件再加上自己写的main函数就可以集

成解压。[code]/*

LzmaCompress

------------

outPropsSize -

In: the pointer to the size of outProps buffer; *outPropsSize =

LZMA_PROPS_SIZE = 5.

Out: the pointer to the size of written properties in outProps buffer;

*outPropsSize = LZMA_PROPS_SIZE = 5.

LZMA Encoder will use defult values for any parameter, if it is

-1 for any from: level, loc, lp, pb, fb, numThreads

0 for dictSize

level - compression level: 0 <= level <= 9;

level dictSize algo fb

0: 16 KB 0 32

1: 64 KB 0 32