当前位置: 首页 > 工具软件 > Buckets-JS > 使用案例 >

js 数组 堆栈 和 buckets 效率 对比

简俊楚
2023-12-01

原文链接: js 数组 堆栈 和 buckets 效率 对比

上一篇: vue 算法可视化 汉诺塔加强版

下一篇: mnist 转换为record 使用tf data 转换 读取 训练

定义和用法

shift() 方法用于把数组的第一个元素从其中删除,并返回第一个元素的值。

语法

arrayObject.shift()

返回值

数组原来的第一个元素的值。

说明

如果数组是空的,那么 shift() 方法将不进行任何操作,返回 undefined 值。请注意,该方法不创建新数组,而是直接修改原有的 arrayObject。

提示和注释

注释:该方法会改变数组的长度。

提示:要删除并返回数组的最后一个元素,请使用 pop() 方法。

尾部删除和头部删除的效率差别很大,在数组的长度比较长时很显著!!!!所以如果使用数组模拟堆栈的话,小数据量可以随便玩,大数据量的话还是使用专用库吧

比如

Buckets

https://github.com/mauriciosantos/Buckets-JS

测试代码

var buckets = require('buckets-js');
let size = 100000
let test_size = 10000
a = Array.from(Array(size)).map((v, i) => i)
console.log(a.length)


st = new Date().getTime()
for (let i = 0; i < test_size; i++)
  a.shift()
ed = new Date().getTime()
console.log('js queue', a.length, ed - st)

a = Array.from(Array(size)).map((v, i) => i)
st = new Date().getTime()
for (let i = 0; i < test_size; i++)
  a.pop()
ed = new Date().getTime()
console.log('js stack ', a.length, ed - st)


q = buckets.Queue()
a = Array.from(Array(size)).map((v, i) => q.enqueue(i))
st = new Date().getTime()
for (let i = 0; i < test_size; i++)
  q.dequeue()
ed = new Date().getTime()
console.log('bucket queue', q.size(), ed - st)

q = buckets.Stack()
a = Array.from(Array(size)).map((v, i) => q.push(i))
st = new Date().getTime()
for (let i = 0; i < test_size; i++)
  q.pop()
ed = new Date().getTime()
console.log('bucket queue', q.size(), ed - st)

测试结果,可以看到buckets的效率还是很不错的

let size = 100000
let test_size = 10000

100000
js queue 90000 431
js stack  90000 2
bucket queue 90000 3
bucket queue 90000 3




let size = 1000000
let test_size = 1000

1000000
js queue 999000 1218
js stack  999000 0
bucket queue 999000 1
bucket queue 999000 0

 类似资料: