我在JS中实现了一种双向映射。它可以存储两个列表(左侧和右侧),并可以存储两侧之间的关系,保存其他数据。示例:
let ingredients = 'apple chocolate vanilla'.split(' ')
let desserts = 'cheesecake blackforest'.split(' ')
ingredients.forEach((i) => { bdm.ladd(i, i)})
desserts.forEach((d) => { bdm.radd(d, d)})
bdm.join('apple', 'cheesecake', '4')
bdm.join('chocolate', 'blackforest', '200g')
bdm.join('vanilla', 'cheesecake', '1g')
bdm.join('vanilla', 'blackforest', '2.5g')
// query again structure
bdm.seek('vanilla', null, (assoc) => { console.log(assoc) })
// output:
// { left: 'vanilla', right: 'chesscake', data: '1g'}
// { left: 'vanilla', right: 'blackforest', data: '2.5g'}
由于我的bidimap是使用Maps of Maps实现的,因此它应该是时间常数。我想通过对它进行基准测试来证明它。
我希望使用benchmark.js来衡量它。
let sizes = [10, 20, 50, 100, 200, 500, 1000, 2000, 5000]
let density = [1, 2, 5, 10, 20, 50, 100] // percentages
sizes.forEach((s) => {
density.forEach((d) => {
// START TIMER
// generatte a S items list (left)
// generatte a S items list (rightt)
// store list in map
// association items left * right with a robability of 1 / D
// END TIMER
// REPORT (LOG) size * density --> time
})
})
如何使用lib benchmarks.js编写适当的测试?
和
如何评估数据结构的内存占用量?
提前致谢!