From a6e69f8c08958a0909a60b53d048b21d181e90e5 Mon Sep 17 00:00:00 2001 From: Timothy Gu Date: Sun, 19 Mar 2017 16:05:55 -0700 Subject: [PATCH] benchmark: add more options to map-bench PR-URL: https://github.com/nodejs/node/pull/11930 Reviewed-By: Anna Henningsen Reviewed-By: Colin Ihrig Reviewed-By: Luigi Pinca Reviewed-By: James M Snell --- benchmark/es/map-bench.js | 42 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 41 insertions(+), 1 deletion(-) diff --git a/benchmark/es/map-bench.js b/benchmark/es/map-bench.js index 047fc05abd..4663d71bdd 100644 --- a/benchmark/es/map-bench.js +++ b/benchmark/es/map-bench.js @@ -4,7 +4,10 @@ const common = require('../common.js'); const assert = require('assert'); const bench = common.createBenchmark(main, { - method: ['object', 'nullProtoObject', 'fakeMap', 'map'], + method: [ + 'object', 'nullProtoObject', 'nullProtoLiteralObject', 'storageObject', + 'fakeMap', 'map' + ], millions: [1] }); @@ -36,6 +39,37 @@ function runNullProtoObject(n) { bench.end(n / 1e6); } +function runNullProtoLiteralObject(n) { + const m = { __proto__: null }; + var i = 0; + bench.start(); + for (; i < n; i++) { + m['i' + i] = i; + m['s' + i] = String(i); + assert.strictEqual(String(m['i' + i]), m['s' + i]); + m['i' + i] = undefined; + m['s' + i] = undefined; + } + bench.end(n / 1e6); +} + +function StorageObject() {} +StorageObject.prototype = Object.create(null); + +function runStorageObject(n) { + const m = new StorageObject(); + var i = 0; + bench.start(); + for (; i < n; i++) { + m['i' + i] = i; + m['s' + i] = String(i); + assert.strictEqual(String(m['i' + i]), m['s' + i]); + m['i' + i] = undefined; + m['s' + i] = undefined; + } + bench.end(n / 1e6); +} + function fakeMap() { const m = {}; return { @@ -84,6 +118,12 @@ function main(conf) { case 'nullProtoObject': runNullProtoObject(n); break; + case 'nullProtoLiteralObject': + runNullProtoLiteralObject(n); + break; + case 'storageObject': + runStorageObject(n); + break; case 'fakeMap': runFakeMap(n); break;