mirror of https://github.com/lukechilds/node.git
Browse Source
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>v4.x
Anton Khlynovskiy
9 years ago
committed by
Myles Borins
3 changed files with 41 additions and 3 deletions
@ -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); |
|||
} |
Loading…
Reference in new issue