diff options
author | Anton Khlynovskiy <subzey@gmail.com> | 2016-01-26 15:13:12 +0300 |
---|---|---|
committer | Ali Sheikh <ofrobots@lemonhope.roam.corp.google.com> | 2016-03-02 09:24:24 -0800 |
commit | c647e87504ad1855cad243bd4b3f9b78764a1144 (patch) | |
tree | b3e87dd49853607cf435edfb941d8bedd950450b /benchmark | |
parent | 6361c049a926e24f227469cfdf2af58df383847c (diff) | |
download | android-node-v8-c647e87504ad1855cad243bd4b3f9b78764a1144.tar.gz android-node-v8-c647e87504ad1855cad243bd4b3f9b78764a1144.tar.bz2 android-node-v8-c647e87504ad1855cad243bd4b3f9b78764a1144.zip |
lib: freelist: use .pop() for allocation
Array#pop() is known to be faster than Array#shift().
To be exact, it's O(1) vs. O(n). In this case there's no difference
from which side of the "pool" array the object is retrieved,
so .pop() should be preferred.
PR-URL: https://github.com/nodejs/node/pull/2174
Reviewed-By: mscdex - Brian White <mscdex@mscdex.net>
Reviewed-By: jasnell - James M Snell <jasnell@gmail.com>
Reviewed-By: ofrobots - Ali Ijaz Sheikh <ofrobots@google.com>
Diffstat (limited to 'benchmark')
-rw-r--r-- | benchmark/misc/freelist.js | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/benchmark/misc/freelist.js b/benchmark/misc/freelist.js new file mode 100644 index 0000000000..76275000b0 --- /dev/null +++ b/benchmark/misc/freelist.js @@ -0,0 +1,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); +} |