Browse Source

benchmark: add more options to map-bench

PR-URL: https://github.com/nodejs/node/pull/11930
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
v6
Timothy Gu 8 years ago
parent
commit
a6e69f8c08
  1. 42
      benchmark/es/map-bench.js

42
benchmark/es/map-bench.js

@ -4,7 +4,10 @@ const common = require('../common.js');
const assert = require('assert'); const assert = require('assert');
const bench = common.createBenchmark(main, { const bench = common.createBenchmark(main, {
method: ['object', 'nullProtoObject', 'fakeMap', 'map'], method: [
'object', 'nullProtoObject', 'nullProtoLiteralObject', 'storageObject',
'fakeMap', 'map'
],
millions: [1] millions: [1]
}); });
@ -36,6 +39,37 @@ function runNullProtoObject(n) {
bench.end(n / 1e6); 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() { function fakeMap() {
const m = {}; const m = {};
return { return {
@ -84,6 +118,12 @@ function main(conf) {
case 'nullProtoObject': case 'nullProtoObject':
runNullProtoObject(n); runNullProtoObject(n);
break; break;
case 'nullProtoLiteralObject':
runNullProtoLiteralObject(n);
break;
case 'storageObject':
runStorageObject(n);
break;
case 'fakeMap': case 'fakeMap':
runFakeMap(n); runFakeMap(n);
break; break;

Loading…
Cancel
Save