summaryrefslogtreecommitdiff
path: root/benchmark/es/map-bench.js
diff options
context:
space:
mode:
Diffstat (limited to 'benchmark/es/map-bench.js')
-rw-r--r--benchmark/es/map-bench.js42
1 files changed, 41 insertions, 1 deletions
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;