1.1.5 • Published 2 years ago

fast-bitmap v1.1.5

Weekly downloads
-
License
ISC
Repository
-
Last release
2 years ago

fast-bitmap

用一个 bit 位来存放数据状态,利用计算机最小单位存储,针对原始类型数据利用率不高的优化,达到提升压缩存储效果,另外利用索引,二进制位运算达成快速查找的目的

目前版本主要作用

  1. 压缩大量数据存储的内存空间 节约空间是因为正常一个 int(32 位),只能表示一个数,优化后一个 int 表示 32 个数状态,所以空间是压缩的,连续的大量的数最好情况下是 原来 size/ 32
  2. 提高查询效率 检索效率是分层了 & 位运算比对 来提升,有点类似后端分库分表

api

  • add(num: number): void; 添加一个数
  • remove(num: number): void; 删除一个数
  • exist(num: number): void; 判断一个数是否存在
  • getAllNumber(): Array; 获取所有的数

使用示例

// 初始化
 // 1 & 5 & 10 位存在数
 const hexNum10 = parseInt("10000100010", 2);
 const bitmap = new BitMap({
 0: hexNum10,
 });
 expect(bitmap.exist(1)).toBe(true);
 expect(bitmap.exist(5)).toBe(true);
 expect(bitmap.exist(10)).toBe(true);
 // 11 不在bitmap里面
 expect(bitmap.exist(11)).toBe(false);

// 新增大量数据
const FastBitmap = require("fast-bitmap");
const fastBitmap = new FastBitmap();
for(let i=0; i<20000; i++) {
  fastBitmap.add(i);
};

fastBitmap.exit(9999) // true
fastBitmap.exit(20001) // false

// 移除一个数
  const bitmap = new BitMap();
    bitmap.add(1001);
    bitmap.add(5555);
    bitmap.exist(1001); // true
    bitmap.exist(5555); // true

    bitmap.remove(1001);
    bitmap.remove(5555);
    bitmap.exist(1001);  // false
    bitmap.exist(5555); // false

// 判断一个数是否存在
   const bitmap = new BitMap();
    bitmap.add(1001);
    bitmap.add(5555);
    bitmap.exist(1001); // true
    bitmap.exist(5555); // true

    bitmap.remove(1001);
    bitmap.remove(5555);
    bitmap.exist(1001); // false
    bitmap.exist(5555); // false
	```
1.1.5

2 years ago

1.1.4

2 years ago

1.1.3

2 years ago

1.1.2

2 years ago

1.1.1

2 years ago

1.1.0

2 years ago