summaryrefslogtreecommitdiff
path: root/benchmark
diff options
context:
space:
mode:
authorAnton Khlynovskiy <subzey@gmail.com>2016-01-26 15:13:12 +0300
committerAli Sheikh <ofrobots@lemonhope.roam.corp.google.com>2016-03-02 09:24:24 -0800
commitc647e87504ad1855cad243bd4b3f9b78764a1144 (patch)
treeb3e87dd49853607cf435edfb941d8bedd950450b /benchmark
parent6361c049a926e24f227469cfdf2af58df383847c (diff)
downloadandroid-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.js38
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);
+}