@calcit/finger-vec

中文文档
0.1.1发布于 2026/10/02MITTypeScriptES Module零依赖构建来源已验证近 30 天下载 1.3万

Calcit 运行时间的持久性向量: 有前后缓冲器的被块化的放松的 B- tree

中文使用文档
文档目录6 节
  1. 手指维克( TypeScript)
  2. 版式
  3. 使用量
  4. 业绩
  5. 发展
  6. 许可证

手指维克( TypeScript)

一种持久性(不可移动、结构共享)矢量,用于 卡尔西特 JavaScript 运行时间. 它取代了列表中 @calcit/ternary-tree (英语)罗斯特双胞胎住在 手指维克.rs;两者都使用相同的布局和算法.

npm

版式

front buffer | relaxed B-tree of chunks | back buffer
  • 元素生活在多达32个物项的块中;32个或更少的物项清单是一个阵列.
  • 中间是松散的B-树(分支因子32,累积大小,所有叶子都在同一深度),和RRB矢量一样.
  • 两端的缓冲使得推力和弹出都变得便宜. 附加到最新版本的列表会写入自己的后排而非复制;更古老的版本从不读过自己的结尾,因此不会受到影响.
  • 接合会沿着接合线相接,并合并了那里的节点,因此接合环会保持高度对数.
运行费用
get, (中文(简体) ), assocO(log₃₂ n)
pushLeft, (中文(简体) ), pushRight, (中文(简体) ), dropLeft, (中文(简体) ), dropRight摊销 O(1) 加块复制件
concat, (中文(简体) ), split, (中文(简体) ), slice, (中文(简体) ), insert, (中文(简体) ), dissocO(log n)
FingerVec.from(array)O(n)

使用量

import { FingerVec } from "@calcit/finger-vec";

const xs = FingerVec.of(1, 2, 3);
const ys = xs.pushRight(4).pushLeft(0);
ys.toArray(); // [0, 1, 2, 3, 4]
xs.len(); // 3, unchanged

const [left, right] = ys.split(2);
left.concat(right).equals(ys); // true
ys.slice(1, 3).toArray(); // [1, 2]
for (const x of ys) console.log(x);

主要方法: len, (中文(简体) ), get, (中文(简体) ), first, (中文(简体) ), last, (中文(简体) ), pushLeft编号 :prepend, (中文(简体) ), pushRight编号 :append, (中文(简体) ), dropLeft, (中文(简体) ), dropRight, (中文(简体) ), rest, (中文(简体) ), butlast, (中文(简体) ), assoc, (中文(简体) ), dissoc, (中文(简体) ), insert(idx, item, after), (中文(简体) ), insertAt, (中文(简体) ), assocBefore, (中文(简体) ), assocAfter, (中文(简体) ), split, (中文(简体) ), slice, (中文(简体) ), take, (中文(简体) ), skip, (中文(简体) ), concat, (中文(简体) ), FingerVec.concatAll, (中文(简体) ), reverse, (中文(简体) ), map, (中文(简体) ), forEach, (中文(简体) ), findIndex, (中文(简体) ), indexOf, (中文(简体) ), toArray, (中文(简体) ), equals, (中文(简体) ), items() 财务报告和审定财务报表 for...of。 。 。 . get 返回时 undefined 超出范围; rest, (中文(简体) ), butlast, (中文(简体) ), assoc, (中文(简体) ), dissoc, (中文(简体) ), insert 财务报告和审定财务报表 slice 丢入无效的输入,匹配所使用的三角树函数 Calcit .

业绩

对照 @calcit/ternary-tree 0.0.26 在节点22上,Linux x86-64,单跑:

大小写三角树手指维克加速
附录 100k70.00分钟24.87分钟2.8× (中文(简体) )
预花100k82.35毫秒48.84毫秒1.7× (中文(简体) )
从阵列 100k19.46分钟0.95 分钟20× (英语)
随机 get 100k (100克) (100克)58.10毫秒20.59分钟2.8× (中文(简体) )
rest 直到空出, 100克32.91毫秒18.94毫秒(每分钟)1.7× (中文(简体) )
随机 assoc 100k (100克) (100克)148.21 毫秒90.48分钟1.6× (中文(简体) )
concat acc [x] 五千块 get 每个项目118.18毫秒1.65毫秒(每分钟一秒)72× (中文(简体) )
在中间3k插入174.84分钟32.33分钟5.4× (中文(简体) )
队列: 附加+休息 100k110.77毫秒22.44分钟4.9× (中文(简体) )
32 项列表: 从数组 x300k543.96 毫秒(秒数)30.94毫秒(每秒)18× (中文(简体) )
8 个项目列表: 附加到同一基数×300k24.65毫秒48.42分钟0.5× (中文(简体) )
concat acc [x] 5k 调用6.33 分钟9.41分钟0.7× (中文(简体) )

重复复制到一个共享的小列表中 每次复制它的块, 它比Ternary-tree的小节点慢。 另一方面,三重树在5000个凸起后会达到2,501个深度,在几千个中间插入后会溢出堆栈; FingerVec会停留在3–4深度. 运行 npm run bench 给机器上的指纹号码.

发展

QQ 类型脚本QQ npm run test:package 焦油弹 焦油弹 节点-; 。

发布通过 .github/workflows/npm-publish.yaml 空虚 npm OIDC 信任的出版, QQ sord。 npm ch 信任的出版商 qq calcit-lang/finger-vec.ts 和文件名 npm-publish.yaml; 当前工作 43. GitHub Environment, 该选项留空。保存配置后可通过 发布QQ工作流程;2FA QQ。

npm install
npx tsc
node lib/test.mjs
node lib/bench.mjs

测试将随机操作序列与阵列进行比较,在每个步骤后检查结构变异性,并申明深度界限来进行接合循环和中间插入.

许可证

麻省理工学院

版本与发布记录

@calcit/finger-vec 共发布 2 个版本,首次发布于 2026/10/02;过去 12 个月发布了 2 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
0.1.1latest2026/10/021 个月前
0.1.02026/10/021 个月前

关于 @calcit/finger-vec 的常见问题

@calcit/finger-vec 是什么?

Calcit 运行时间的持久性向量: 有前后缓冲器的被块化的放松的 B- tree

如何安装 @calcit/finger-vec?

在项目目录运行 npm install @calcit/finger-vec,或使用 pnpm add / yarn add / bun add。

@calcit/finger-vec 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@calcit/finger-vec 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@calcit/finger-vec 可以商用吗?

@calcit/finger-vec 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@calcit/finger-vec 的下载量有多少?

根据 npm 官方下载统计,@calcit/finger-vec 在 2026/10/09 – 2026/11/07 这 30 天内被下载 13,414 次,日均约 447 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@calcit/finger-vec 还在维护吗?

最新版本 0.1.1 发布于 2026/10/02(1 个月前);至今共发布 2 个版本,其中过去 12 个月发布了 2 个;首次发布于 2026/10/02。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。