Cascade:Novel high-throughput compressor ideal for analytical or structured/tabular data.
Cascade:新型高吞吐量压缩器,非常适合分析结构化/表格数据。
高效压缩整形数据。
由RLE、Delta encoding、Bit-packing组合。
RLE:1,1,1,1,3,3 =》 值(1,3) 数(4,2);
Delta:1,3,2,4,3 =》 1,2,-1,2,-1 相对前一个数的偏移量;
Bit-packing:5,6,9,5 =》 5(0,1,4,0) 相对基数的偏移量;
LZ4: General-purpose no-entropy byte-level compressor well-suited for a wide range of datasets.
LZ4:通用无熵字节级压缩器,非常适合多种类型的数据集。
面向byte数据。 简单高速。适用于任意数据。
LZ4通过匹配重复字符串进行压缩,不是全文匹配,只是在一定范围内进行匹配。
经LZ4压缩后的数据结构包括:
Header:1Byte;前4位存literal的长度(0-15);后4位存literal匹配成功的长度(4-19),匹配上的长度至少为4;
Literal linear small-integer codes:如果literal长度超过15,用此值表示;如果未超过15,省略此项;
Literals:无法被压缩的字符串;
Offset:匹配成功的位置相对于Literal末尾的偏移量;1Byte:0-65535;
Match LCIS:如果匹配成功的长度超过19,用此值表示;如果未超过19,省略此项。
ANS: Proprietary entropy encoder based on asymmetric numeral systems (ANS).
ANS:基于非对称数字系统(ANS)的专有熵编码器。
“ANS 算法基于香农熵理论“信息程度与熵呈正相关”以及“平均 1 比特信息要 1 比特消息存储”,推理出 x'≈x/Ps 的约等式。再根据“x 比特信息量等于从 x 物体选 1 的信息量” 联想到 “x’ 为 第 x 个 s”,从而依靠概率分布表实现在一个数字 x’ 中同时保存 x 和 s 的信息。因此,它有 AC 算法的压缩率,但是比它快(只需要一个 x 记录所有信息,AC 要两个)。它也有 Huffman 的速度,但是比它压缩率高(它可能以小数点个比特来记录新信息,Huffman 必须是整数个)。”引用自
Bitcomp: Proprietary compressor designed for floating point data in Scientific Computing applications.
Bitcomp:为科学计算应用中的浮点数据设计的专有压缩器。
Snappy: Similar to LZ4, this byte-level compressor is a popular existing format used for tabular data.
Snappy:与LZ4类似,这个字节级压缩器大家都愿意用于表格数据。
LZ77的优化,与LZ4类似。
相比于LZ4,snappy将压缩后的内容分为两种基本单位,模式串和匹配串。
第一个bit表示该单位为模式串或者匹配串。
模式串为不可压缩部分。匹配串是与模式串的重复部分。
于是匹配串可以保存为与模式串的关系。
“Snappy 是谷歌基于 LZ77 算法思想编写出的压缩解压缩库,其目标并非最大压缩率或与其他压缩程序库的兼容性,而是非常高的速度和合理的压缩率。”引用自
GDeflate: Proprietary compressor with entropy encoding and LZ77, high compression ratios on arbitrary data.
GDeflate:熵编码和LZ77的专用压缩器,对任意数据具有高压缩比。
找不到资料,相似搜索deflate
deflate结合LZ77和Huffman。LZ77与snappy类似。
“deflate 压缩器在怎样压缩数据上有非常大的灵活性. 程序员必须处理设计聪明的算法所面临的问题以做出正确的选择. 但是压缩器的确有一些选择.
压缩器有三种压缩模型:
1. 不压缩数据, 对于已经压缩过的数据,这是一个明智的选择. 这样的数据会会稍稍增加, 但是会小于在其上再应用一种压缩算法.
2. 压缩, 先用Lz77, 然后用huffman编码. 在这个模型中压缩的树是Deflate 规范规定定义的, 所以不需要额外的空间来存储这个树.
3. 压缩, 先用LZ77, 然后用huffman编码. 压缩树是由压缩器生成的, 并与数据一起存储.
数据被分割成不同的块, 每个块使用单一的压缩模式. 如过压缩器要在这三种压缩模式中相互切换, 必须先结束当前的块, 重新开始一个新的块.
关于Lz77和huffman如何一起工作的细节需要更进一步的检查. 一旦原始数据被转换成了字符和长度距离对组成的串, 这些数据必须由huffman编码表示.”引用自