summaryrefslogtreecommitdiff
path: root/benchmark/misc/freelist.js
blob: 7fa9af4f3ddb7f71925360c5edcc5850901828a2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
'use strict';

const common = require('../common.js');

const bench = common.createBenchmark(main, {
  n: [100000]
}, {
  flags: ['--expose-internals']
});

function main({ n }) {
  const { FreeList } = require('internal/freelist');
  const poolSize = 1000;
  const list = new FreeList('test', poolSize, Object);
  var j;
  const used = [];

  // First, alloc `poolSize` items
  for (j = 0; j < poolSize; j++) {
    used.push(list.alloc());
  }

  bench.start();

  for (var i = 0; i < n; i++) {
    // Return all the items to the pool
    for (j = 0; j < poolSize; j++) {
      list.free(used[j]);
    }

    // Re-alloc from pool
    for (j = 0; j < poolSize; j++) {
      list.alloc();
    }
  }

  bench.end(n);
}