LZO算法是一种最快速的无损数据压缩解压算法,其中LZO是Lempel-Ziv-Oberhumer的缩写。一个实现LZO算法的软件工具是lzop,较之常见的gzip,lzop可以提供更快的压缩与解压缩速度。最初LZO库由ANSI C编写,现在LZO有Perl、Python以及Java等各种版本。
LZO以处理速度为设计原则,一般来说,LZO的解压速度要快于其压缩速度,但其压缩比例可以根据需要自由调节,而且不会影响到解压速度。算法解压很简单,无需内存支持;并且LZO可以提供无损压缩。
ANSI C编写的LZO库能够提供非常快速的压缩和解压缩功能,即使压缩数据的压缩比非常大,LZO库依然可以非常快速的解压这些数据。因此,LZO 非常适合对数据进行实时的压缩解压处理,它更关心处理速度,而不是压缩比例。
网上有现成的用ANSI C编写的LZO开源项目,目前最新的版本是今年5月份更新的version 2.10。使用LZO库的基本功能也非常简单。
比如你可以通过lzo1x_1_compress()来压缩数据,或者通过 lzo1x_decompress()来解压数据 。
LZO库中有很多算法,这是因为有很多的历史版本,但其提供了良好的向下兼容性,你可以仅仅选择使用其中一种算法。
比如以下一些方法都能用于解压缩,但各有各的特点:
1.lzo1x_decompress。这是一种标准的解压方式,能够提供较快的解压速度,但是并不提供附加的相关数据安全检查,默认处理的数据是完成的压缩后数据。
2.lzo1x_decompress_safe。这是一个安全的解压方式,但是会慢一些。它会捕捉解压中的数据问题,并且返回相关的错误信息,从而避免产生严重的错误。
3.lzo1x_decompress_asm、lzo1x_decompress_asm_safe、lzo1x_decompress_asm_fast。这些方法与上述类似,但是都是通过汇编来实现的。
综上所述,当必须要尽可能快的压缩和解压数据,同时不能消耗过多的CPU资源时,LZO算法是一个很好的选择。