summaryrefslogtreecommitdiff
path: root/benchmark/misc/freelist.js
blob: 76275000b08ffb471bb37c52c3237c874792a214 (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';

var common = require('../common.js');
var FreeList = require('internal/freelist').FreeList;

var bench = common.createBenchmark(main, {
  n: [100000]
});

function main(conf) {
  var n = conf.n;
  var poolSize = 1000;
  var list = new FreeList('test', poolSize, Object);
  var i;
  var j;
  var used = [];

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

  bench.start();

  for (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);
}