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>process-exit-stdio-flushing
Anton Khlynovskiy
9 years ago
committed by
Ali Sheikh
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