`
gaojingsong
  • 浏览: 1201799 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

【压缩算法之LZ4】

阅读更多

LZ4 is a very fast compression and decompression algorithm. This nodejs module provides a Javascript implementation of the decoder as well as native bindings to the LZ4 functions. Nodejs Streams are also supported for compression and decompression.

 

NB. Version 0.2 does not support the legacy format, only the one as of "LZ4 Streaming Format 1.4". Use version 0.1 if required.

 

 

Encoding

There are 2 ways to encode:

asynchronous using nodejs Streams - slowest but can handle very large data sets (no memory limitations).

synchronous by feeding the whole set of data - faster but is limited by the amount of memory

 

 

Decoding

There are 2 ways to decode:

asynchronous using nodejs Streams - slowest but can handle very large data sets (no memory limitations)

synchronous by feeding the whole LZ4 data - faster but is limited by the amount of memory

 

 

LZ4格式

 

The compressed block is composed of sequences.

每个数据块可以压缩成若干个序列,格式如下:

 

 

(1) literals

length of literals. If it is 0, then there is no literal. If it is 15, then we need to add some more bytes to indicate the

full length. Each additional byte then represent a value of 0 to 255, which is added to the previous value to produce

a total length. When the byte value is 255, another byte is output.

literals are uncompressed bytes, to be copied as-is.

 

(2) match

offset. It represents the position of the match to be copied from.

Note that 0 is an invalid value, never used. 1 means "current position - 1 byte".

The maximum offset value is really 65535. The value is stored using "little endian" format.

matchlength. There is an baselength to apply, which is the minimum length of a match called minmatch.

This minimum is 4. As a consequence, a value of 0 means a match length of 4 bytes, and a value of 15 means a

match length of 19+ bytes. (Similar to literal length)

 

(3) rules

1. The last 5 bytes are always literals.

2. The last match cannot start within the last 12 bytes.

So a file within less than 13 bytes can only be represented as literals.

 

(4) scan strategy

a single-cell wide hash table.

Each position in the input data block gets "hashed", using the first 4 bytes (minimatch). Then the position is stored

at the hashed position. Obviously, the smaller the table, the more collisions we get, reducing compression

effectiveness. The decoder do not care of the method used to find matches, and requires no addtional memory.

 

(5) Streaming format

0
1
分享到:
评论

相关推荐

    lz4压缩算法java实现-LZ4-极快的压缩算法,排序算法数据结构 最快的排序算法

    LZ4压缩算法java实现 LZ4压缩算法是lossless压缩算法,提供了高达500 MB/s每个核心的压缩速度,且可以根据多核CPU进行扩展。它具有极快的解压速度,速度可达多GB/s每个核心,通常达到多核系统中的RAM速度限制。速度...

    lz4压缩算法源码

    lz4压缩算法源码 LZ4 is a lossless data compression algorithm that is focused on compression and decompression speed

    C语言实现LZ77压缩算法

    LZ77(Lempel-Ziv-77)压缩算法是数据压缩领域中的一个经典方法,由Abraham Lempel和Jacob Ziv在1977年提出。这种无损压缩技术主要用于文本和二进制数据,尤其适用于未经过预处理的数据。C语言是一种通用的、面向...

    lz4压缩算法零修改移植

    1、独立lz4压缩移植,零修改,只添加用户自定义文件lz4_user.c和lz4_user.h; 2、默认用的栈资源(速度快),可选用堆。# define LZ4_HEAPMODE 0; 3、默认用到栈大小为14k,若资源有限可调小。# define LZ4_MEMORY_...

    LZ77压缩算法(C语言版)

    ### LZ77压缩算法(C语言版)知识点解析 #### 一、LZ77压缩算法简介 LZ77是一种无损数据压缩算法,由Abraham Lempel和Jacob Ziv于1977年提出,是LZ系列算法中的一个。该算法通过查找历史数据中的重复序列来实现数据...

    c#版本 Lz77压缩算法

    c# Lz77 压缩算法,已经使用很久 没有bug

    LZ77数据无损压缩算法,可以直接运行

    LZ77算法的变体众多,包括LZSS(Lempel-Ziv-Storer-Szymanski)和LZ4、LZ5等,它们在细节上有所不同,如窗口大小、匹配查找策略等,但基本思想保持不变。LZ77的优势在于它无需预先了解输入数据的统计特性,而是通过...

    LZ77压缩算法介绍

    LZ77压缩算法是数据压缩领域中一种基础且重要的无损压缩方法,由 Abraham Lempel 和 Jacob Ziv 在1977年提出,因此得名。这种算法基于滑动窗口的概念,通过查找文本中的重复模式来实现数据的压缩。在本文中,我们将...

    lz77压缩算法c语言实现

    LZ77(Lempel-Ziv-77)压缩算法是数据压缩领域中的一个经典算法,由Abraham Lempel和Jacob Ziv在1977年提出。该算法基于滑动窗口策略,通过查找输入数据中的重复模式来创建编码,从而减少原始数据的存储需求。下面将...

    lz78数据压缩算法

    lz78数据压缩算法是基于LZ78的数据压缩算法,主要讲解LZ78算法中用到的几个术语和符号、LZ78的编码思想及LZ78编码的具体算法步骤。LZ78算法的主要思想是不断地从字符流中提取新的缀-符串,然后用“代号”也就是码字...

    LZ77压缩算法

    LZ77压缩算法,全称为Lempel-Ziv-Welch(或Lempel-Ziv-Storer-Szymanski)算法,是数据压缩领域的一种基础且广泛应用的无损压缩算法。该算法由以色列科学家Abraham Lempel、Jacob Ziv和美国科学家Mark Welch共同提出...

    lz77压缩算法源码

    LZ77(Lempel-Ziv-77)压缩算法是数据压缩领域的一个经典方法,由Abraham Lempel和Jacob Ziv于1977年提出。它是一种无损压缩技术,常用于创建ZIP文件格式。在本文中,我们将深入探讨LZ77压缩算法的工作原理、ZIP和...

    LZ4压缩算法集合包

    LZ4压缩算法集合包是一个综合性的资源包,旨在为开发者提供全面的LZ4压缩技术支持。LZ4是一种高效、快速的压缩算法,广泛应用于数据存储、传输和实时流处理等领域。这个压缩包包含了以下关键组成部分: 1. **LZ4...

    各种压缩算法源码

    在IT领域,压缩算法是数据处理和存储的关键技术之一,它们能够有效地减小文件的大小,提高存储效率和网络传输速度。本资源包含多种压缩算法的源代码,这些算法都有详细的注释,对于理解压缩原理、学习编程实现以及...

    lz4解压缩工具32位

    LZ4是一种高效快速的压缩算法,主要设计用于数据存储和传输场景,具有较高的压缩速度和解压缩速率。在IT领域,这样的工具对于处理大量数据、优化存储空间和提高网络传输效率至关重要。针对32位Windows系统,LZ4解...

    图像压缩算法---lz77

    **图像压缩算法——LZ77** 在信息技术领域,数据压缩是至关重要的,尤其是在处理图像、音频和视频等大量数据时。LZ77(Lempel-Ziv算法的1977版本)是一种无损数据压缩算法,由Abraham Lempel和Jacob Ziv在1977年...

    LZ77压缩算法及其派生算法探究

    简介了LZ77压缩算法,详尽阐述了算法的基本原理。

    压缩算法.docx

    本文主要探讨了网络上主流的压缩算法,包括Huffman压缩算法和LZ系列压缩算法,并提供了Java版的实现代码示例。 Huffman压缩算法是一种基于频率的无损压缩方法,特别适合于压缩具有高信息重复率的文件。其优点在于...

    lz4:极快压缩算法

    LZ4-极快的压缩LZ4是无损压缩算法,提供每核心大于500 MB / s的压缩速度,可通过多核CPU进行扩展。 它具有极快的解码器,每个内核的速度为多个GB / s,通常在多内核系统上达到RAM速度限制。 速度可以动态调整,选择...

    LZ.rar_LZ 压缩_LZ算法字典_lz 压缩 算法_lz.c_lz77.c

    LZ压缩算法是一种广泛应用于数据压缩领域的算法,其核心思想是通过查找输入数据中的重复模式并用较短的编码来表示这些模式,从而达到压缩数据的目的。标题中的"LZ.rar"是一个包含LZ压缩相关实现的压缩包,而"LZ算法...

Global site tag (gtag.js) - Google Analytics