时间戳压缩算法
1. 首先普通的时间戳如下:
2017年3月3日 3:00:00 1488481200
2017年3月3日 3:01:02 1488481262
2017年3月3日 3:02:02 1488481322
2017年3月3日 3:03:02 1488481382
秒级别的时间戳用long类型存储需要占用8bytes。 如果直接存储以上数据需要32个bytes(256 bits).
2. 最简单的优化自然是存储差值 Delta = T(n)-T(n-1) , 这个时候需要引入一个起始时间戳和Delta阈值,比如:起始时间为3:00:00,阈值为2个小时。以下为阀值之内的位点数:
时间戳 | unix格式 | Delta |
---|---|---|
2017年3月3日 3:00:00 | 1488481200 | 0 |
2017年3月3日 3:01:02 | 1488481262 | 62 |
2017年3月3日 3:02:02 | 1488481322 | 60 |
2017年3月3日 3:03:02 | 1488481382 | 60 |
**每个Delta数值的范围从long.MAX缩小到(0~7200)用13个bit就可以存储。因此存储以上数据需要103bits(64+ 13*3 ) **
3. 再进一步,如果存储差值的差值呢delta-of-delta(本文中用D表示)? 我们来看一下效果:
时间戳 | unix格式 | Delta | Delta of Delta |
---|---|---|---|