王朝百科
分享
 
 
 

LZMA

王朝百科·作者佚名  2010-03-13  
宽屏版  字体: |||超大  

LZMA,(Lempel-Ziv-Markov chain-Algorithm的缩写),是一个Deflate和LZ77算法改良和优化后的压缩算法,开发者是Igor Pavlov,2001年被首次应用于7-Zip压缩工具中,是 2001年以来得到发展的一个数据压缩算法。它使用类似于 LZ77 的字典编码机制,在一般的情况下压缩率比 bzip2 为高,用于压缩的可变字典最大小可达4GB。

概述C++ 语言写成的的 LZMA 开放源码压缩库使用了区间编码支持的 LZ77 改进压缩算法以及特殊的用于二进制的预处理程序。

数据流、重复序列大小以及重续序列位置单独进行了压缩。

LZMA 支持几种散列链变体、二叉树以及基数树作为它的字典查找算法基础。

BCJ / BCJ2 二进制文件压缩BCJ / BCJ2 压缩工具所附带的 LZMA SDK 包括:在 X86、ARM、PowerPC、IA-64 以及 ARM Thumb 处理器上在压缩之前跳转目标进行归一化处理。对于 x86 平台来说,这是一个近跳转、近调用以及近条件跳转需要从“向后跳 1665 字节”这样的机器语言归一化到“跳转到 5554”这样的格式,但是短跳转及短条件跳转不需要进行这样的处理。

尽管 7-Zip BCJ2 使用 32 位的偏移地址,但是 UPX 这样的可执行文件压缩工具当检测到 16 位 DOS 二进制文件格式的时候仍然可以使用 16 位的数值。RAR 压缩工具对 32 位的 x86 可执行文件以及 IA64 Itanium 可执行文件进行偏移地址压缩。

BCJ 与 BCJ2 之间的区别在于前者只将近跳转及近调用目标地址转换到归一化的形式,而 BCJ2 只将 x86 平台下的近跳转、近调用及条件近跳转目标分别进行压缩。

7-Zip 实现在GNU LGPL通用公共许可证下发布的7-zip中使用的LZMA有以下几个特点:

* 高压缩比;

* 解压缩程式码较小:约 5 KB;

* 解压缩时仅需少量内存 (取决于字典大小);

* 可变更字典大小 (最大 4 GB);

* 压缩速度:在一部2GHz的处理器上运行,约可达到1MB每秒的速度;

* 解压缩速度:在一部2GHz的处理器上运行,约可达10-20MB每秒的速度;

* 支援多线程、多核心(多处理器)和Pentium 4处理器的超线程(Hyper-Threading);

这个特点使得这个这个算法的解压过程非常适合于嵌入式系统应用的场合。

可移植性一些微软Windows专有的特性深深嵌入在源程序中,这样就很难生成一个与 Unix 兼容的版本。但是,已经有两个移植到类 Unix 平台的版本:

* p7zip 是一个或多或少地完全将 7z 及 7za 移植到 POSIX 的 7-zip 版本,这些系统包括 Linux、Solaris、OpenBSD、FreeBSD、Cygwin 等 Unix 系统以及 Mac OS X 和 BeOS等。

* LZMA Unix Port 是一个只移植了 LZMA 中代码的版本,它是一个类似于 gzip 的基于数据流的压缩工具。它不是一个归档工具,而只是一个普通的压缩工具,并且由于它在没有数据头中没有未压缩文件大小的 UInt64 变量,所以它与 7-zip 生成的 LZMA 数据流中不同。7-zip 使用一种更加灵活的归档格式 7z,因此二者都不能互相使用对方生成的数据,至少在目前是这样。

应用使用或者支持 LZMA 的软件有:

* Nullsoft Scriptable Install System

* Inno Setup

* cramfs and SquashFS, with applied patches

* lrzip ("long range zip", or "LZMA rzip")

* PyLZMA,Igor Pavlov 的 LZMA SDK 的 Python 语言接口

* FreeArc, 归档工具及 LZMA SDK 的 Haskell 语言接口

* 用于 Pascal 语言的 LZMA SDK

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
如何用java替换看不见的字符比如零宽空格​十六进制U+200B
 干货   2023-09-10
网页字号不能单数吗,网页字体大小为什么一般都是偶数
 干货   2023-09-06
java.lang.ArrayIndexOutOfBoundsException: 4096
 干货   2023-09-06
Noto Sans CJK SC字体下载地址
 干货   2023-08-30
window.navigator和navigator的区别是什么?
 干货   2023-08-23
js获取referer、useragent、浏览器语言
 干货   2023-08-23
oscache遇到404时会不会缓存?
 干货   2023-08-23
linux下用rm -rf *删除大量文件太慢怎么解决?
 干货   2023-08-08
刀郎新歌破世界纪录!
 娱乐   2023-08-01
js实现放大缩小页面
 干货   2023-07-31
生成式人工智能服务管理暂行办法
 百态   2023-07-31
英语学习:过去完成时The Past Perfect Tense举例说明
 干货   2023-07-31
Mysql常用sql命令语句整理
 干货   2023-07-30
科学家复活了46000年前的虫子
 探索   2023-07-29
英语学习:过去进行时The Past Continuous Tense举例说明
 干货   2023-07-28
meta name="applicable-device"告知页面适合哪种终端设备:PC端、移动端还是自适应
 干货   2023-07-28
只用css如何实现打字机特效?
 百态   2023-07-15
css怎么实现上下滚动
 干货   2023-06-28
canvas怎么画一个三角形?
 干货   2023-06-28
canvas怎么画一个椭圆形?
 干货   2023-06-28
canvas怎么画一个圆形?
 干货   2023-06-28
canvas怎么画一个正方形?
 干货   2023-06-28
中国河南省郑州市金水区蜘蛛爬虫ip大全
 干货   2023-06-22
javascript简易动态时间代码
 干货   2023-06-20
感谢员工的付出和激励的话怎么说?
 干货   2023-06-18
 
>>返回首页<<
 
 
 
静静地坐在废墟上,四周的荒凉一望无际,忽然觉得,凄凉也很美
© 2005- 王朝网络 版权所有