Test name | Executions per second |
---|---|
WeakMap set | 102614104.0 Ops/sec |
Symbol Property set | 173704560.0 Ops/sec |
WeakMap get | 97679648.0 Ops/sec |
Symbol Property get | 153358800.0 Ops/sec |
CustomWeakMap set | 167226688.0 Ops/sec |
CustomWeakMap get | 173829632.0 Ops/sec |
class CustomWeakMap {
constructor(relationKey = '__relation') {
this.relationKey = relationKey;
}
// 设置键值对 - 使用直接属性赋值以提高性能
set(key, value) {
key[this.relationKey] = value;
return this;
}
// 获取键对应的值
get(key) {
return key[this.relationKey];
}
// 检查键是否存在
has(key) {
return this.relationKey in key;
}
// 删除键值对
delete(key) {
return delete key[this.relationKey];
}
}
var to0 = {};
var to1 = {};
var to2 = {}
var wm = new WeakMap();
var sy = Symbol();
var cy = new CustomWeakMap();
wm.set(to1, 1);
to1[sy] = 1;
cy.set(to2,1)
wm.set(to0, 1);
to0[sy] = 1;
let r = wm.get(to1);
let r = to1[sy];
cy.set(to2, 1);
let r = cy.get(to2);