随笔 - 64, 文章 - 11, 评论 - 12, 引用 - 0
数据加载中……

LZMA 介绍

LZMA,(Lempel-Ziv-Markov chain-Algorithm的缩写),是一个Deflate和LZ77算法改良和优化后的压缩算法,开发者是Igor Pavlov,目前7zip等压缩工具都使用了LZMA压缩算法。

LZMA 的特性
  - 可变的字典大小,可达1GB。
  - 在2GHZ的CPU上压缩速率是2MB/S秒。
  - 解压速率评估
      - 在2 GHz Core 2 or AMD Athlon 64处理器上,大约是20-30MB/S
      - 在200 MHz ARM, MIPS, PowerPC or other simple RISC 上是1-2MB/S
  - 解压需要少量的内存(16 KB + DictionarySize)
  - 解压代码量很少5-8 KB

http://www.7-zip.org/sdk.html网页上提供了LZMA的SDK开发包下载,包中的一级目录中包含了如下内容:ASM, C, Cpp, CS, Java文件夹,和7zc.txt、7zformat.txt、7zr.exe、history.txt、lzma.exe、lzma.txt、methods.txt文件。lzma.txt是重要的SDK文档,其中介绍了LZMA的目录结构和一些方法的使用,这个文档应该首先看看。我着重看了C的版本,它位于C目录下。在C/util目录下有几个目录,这几个目录中的例子演示了如何使用lzma,lzma目录中是源码使用方式,LzmaLib中是DLL使用方式。其中的代码很多是基于对文件的压缩和解压缩,我这里写了一个内存的压缩示例,把这个方法放在lzma\LzmaUtil.c文件中调用就可以.

code

经过测试,我发现存在频繁申请内存、申请内存的大小变化过大、运行后内存占用率过高。我没有及时找到解决办法,所以没有在项目中采用。

posted on 2012-11-07 15:35 Robertxiao 阅读(6339) 评论(0)  编辑 收藏 引用 所属分类: C++


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理