原创

ELK学习之FOR算法

FOR压缩算法

一、什么是FOR算法

不存储是数据本身,转而存储该数据与前一个数据之间的差值,来减少数据的存储的空间大小
在面对集中的数据时候压缩效果最好
对稀疏数据压缩效果不好,此时应该采用下面所说的
将其中的数组根据动态计算来算出最大的差值的数据

二、举个例

1、2、3、4、5、6、、、100w

如果按照正常的存储过程,该数据只需要存储
100w\*4\*8 bit 大约3200w bit

如果按照FOR算法
只需要存该数据和前一个数据的差值
1、1、1、1、1、1、、、1
用一个比特即可代表差值的数据
1\*100w bit个字节+1 bit  100w bit

数据存储空间少了32倍左右
如果是不规则的话如何存储
	5,227,2,30,15,10
可以分为两组分别为
	5,227     
	8bit(记录的数据存储的bite位数) 8bit+8bit(存储两个数据的比特位数) 
	2,30,15,10
	8bit(记录存储数据的bite位数)+(5\*4bit)(存储字节的数据)~3Byte #为何是3Byte,不足的数据用0来部委补到相应的位置
最后占用的字节数为1+2+1+3=7Byte

存储位数的计算,程序是通过动态计算得出的,而此处是依照最大一个数据需要的位数存储的


三、为啥不分更多的组呢

分组分的太多可能会造成存储额外的开销,同时在解码过程中也不利于程序的解码

四、如果有相关错误的地方请指出来

笔记
  • 作者: qxb(联系作者)
  • 发表时间: 2022-06-13 23:37
  • 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)
  • 公众号转载:请在文末添加作者公众号
  • 评论