5分钟上手deque:npm安装、创建与push/shift基本操作的简单教程
【免费下载链接】dequeExtremely fast double-ended queue implementation项目地址: https://gitcode.com/gh_mirrors/de/deque
deque 是一个极速的 JavaScript 双向队列(double-ended-queue)实现,基于循环缓冲区构建,push、shift、get等所有操作都是 O(1) 常数时间。通过 npm 安装后,你可以用它替代数组来做队列、栈或随机访问场景,性能远超原生数组的shift。下面带你 5 分钟完成安装、创建与基本操作 🚀
为什么不用数组?deque 快在哪里 🤔
原生数组的shift()和unshift()是O(N) 线性时间——队列有 1000 个元素时,就比 deque 慢约 1000 倍;10000 个元素时慢 10000 倍。
而 deque 的底层是一个GC 友好、CPU 缓存友好的循环缓冲区(circular buffer),每个队列操作均为常数O(1),连.get()随机访问也是 O(1)。
官方基准测试数据(摘自 README.md):
| 场景 | double-ended-queue | 原生数组 |
|---|---|---|
| 队列含 1000 个元素 | 约 1553 万 ops/sec | 约 650 万 ops/sec |
| 队列含 200 万个元素 | 约 1443 万 ops/sec | 约 19 ops/sec |
可以看到:数据量越大,原生数组的退化越恐怖 ⚡
npm 一键安装 deque(最快配置方法)
打开终端,执行一条命令即可安装:
npm install double-ended-queue包名在 package.json 中已声明为double-ended-queue,入口文件为 js/deque.js。
创建 deque 队列的 3 种方式
var Deque = require("double-ended-queue"); // 方式 1:空队列(初始容量 16) var dq1 = new Deque(); // 方式 2:用数组初始化 var dq2 = new Deque([1, 2, 3, 4]); // 方式 3:指定初始容量,避免运行时扩容开销 var dq3 = new Deque(100);💡 如果你预先知道队列的最大规模,推荐用
new Deque(capacity),可以省去运行期昂贵的扩容操作。容量上下限定义在 src/constants.js 中。
push 与 shift 基本操作:队尾入、队头出
双向队列的核心玩法就是两端都能进、都能出:
| 方法 | 作用 | 别名 |
|---|---|---|
push(...items) | 从队尾添加元素 | enqueue、insertBack |
unshift(...items) | 从队头添加元素 | insertFront |
pop() | 取出并移除队尾元素 | removeBack |
shift() | 取出并移除队头元素 | removeFront、dequeue |
get(index) | O(1) 随机访问(支持负索引) | — |
peekFront()/peekBack() | 只查看队头/队尾,不移除 | — |
toArray()/isEmpty()/clear() | 转数组 / 判空 / 清空 | — |
一个最典型的使用示例:
var deque = new Deque([1, 2, 3, 4]); deque.push(5); // 队尾添加 → [1,2,3,4,5] deque.pop(); // 取出队尾 → 5 deque.unshift(0); // 队头添加 → [0,1,2,3,4] deque.shift(); // 取出队头 → 0 deque.get(0); // 随机访问队头 → 1 deque.get(-1); // 负索引访问队尾 → 4如果队列是空的,pop()和shift()会返回undefined,使用前可以用.length或isEmpty()检查。
把 deque 当普通队列用
如果你只需要"先进先出"的普通队列,deque 也提供了专门别名:
deque.enqueue("task1", "task2"); // 入队 var task = deque.dequeue(); // 出队 → "task1"项目源码结构一览
| 文件 | 说明 |
|---|---|
| src/deque.js | 核心实现(push/pop/shift/get 等) |
| src/constants.js | 容量上限/下限常量 |
| js/deque.js | npm 发布入口文件 |
| test/deque.js | 单元测试用例 |
| benchmark/two_million.js | 200 万元素性能基准脚本 |
想验证性能时,可以克隆仓库后运行npm install,再执行bench脚本复现官方测试(详见 benchmark/thousand.js)。
小结 ✅
- 安装:
npm install double-ended-queue一条命令搞定 - 创建:支持空队列、数组初始化、指定容量三种方式
- 操作:
push/unshift两端添加,pop/shift两端取出,全部 O(1) - 优势:对比原生数组
shift,大数据量下性能领先数个数量级
5 分钟,你现在已经掌握了 deque 的双向队列基本用法,可以放心用它替换数组来构建高性能队列啦 🎉
【免费下载链接】dequeExtremely fast double-ended queue implementation项目地址: https://gitcode.com/gh_mirrors/de/deque
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考