JS:对双向映射算法进行基准测试

时间:2018-03-12 11:39:44

标签: javascript dictionary benchmarking

我在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编写适当的测试?

如何评估数据结构的内存占用量?

提前致谢!

0 个答案:

没有答案