分享一个 javascript BitMatrix - CNode技术社区

分享一个 javascript BitMatrix
发布于 7 年前 作者 cnwhy 4998 次浏览 来自 分享

最近项目需要缓存一批二维码的点阵信息, 最开始用二维数组存,发现太占资源, 后来改用 Uint8Array 好了点,
想找个直接以bit为单元存储的类,结果没有; 然后就有这个 BitMatrix;

用 ArrayBuffer来存储数据, 并把每个byte再拆成bit来用. 最终效果还是可以的, 有兴趣的可以关注一下, API还在完善中

用 1 填充 2000 个 100*100 矩阵 内存占用情况:
┌─────────┬──────────────────────┬────────────┬────────────┬────────────┐
│ (index) │ className │ heapUsed │ external │ sum │
├─────────┼──────────────────────┼────────────┼────────────┼────────────┤
│ 0 │ 'BitMatrix' │ '0.77MB' │ '2.38MB' │ '3.16MB' │
│ 1 │ 'Int8Matrix' │ '0.87MB' │ '19.07MB' │ '19.94MB' │
│ 2 │ 'Uint8Matrix' │ '0.81MB' │ '19.07MB' │ '19.89MB' │
│ 3 │ 'Uint8ClampedMatrix' │ '0.76MB' │ '19.07MB' │ '19.83MB' │
│ 4 │ 'Int16Matrix' │ '0.68MB' │ '38.15MB' │ '38.83MB' │
│ 5 │ 'Uint16Matrix' │ '0.68MB' │ '38.15MB' │ '38.83MB' │
│ 6 │ 'Int32Matrix' │ '0.51MB' │ '76.29MB' │ '76.80MB' │
│ 7 │ 'Uint32Matrix' │ '0.53MB' │ '76.29MB' │ '76.82MB' │
│ 8 │ 'Float32Matrix' │ '0.53MB' │ '76.29MB' │ '76.82MB' │
│ 9 │ 'Float64Matrix' │ '0.52MB' │ '152.59MB' │ '153.11MB' │
│ 10 │ 'AnyMatrix' │ '153.23MB' │ '0.00MB' │ '153.23MB' │
│ 11 │ 'AnyMatrixUseObject' │ '159.15MB' │ '0.00MB' │ '159.15MB' │
└─────────┴──────────────────────┴────────────┴────────────┴────────────┘
7 回复

我比较好奇你这个统计信息是怎么写的

可以分析一个对象的内存占用

@pzzcn 运行信息写到一张表里

@pzzcn node是可以拿到内存占用信息的呀. 项目中 npm run test-memory 命令可以打印这个统计信息, 看下就知道怎么回事了.

更新: v0.4.0 新增 导入导出 打通存储问题;

回到顶部

AltStyle によって変換されたページ (->オリジナル) /