|
const { Benchmark } = require("benchmark"); |
|
var suite = new Benchmark.Suite(); |
|
|
|
const object = { |
|
name: 'Aschen', |
|
age: 29, |
|
}; |
|
|
|
const proxy = new Proxy({ |
|
name: 'Dana', |
|
age: 31 |
|
}, { |
|
get(target, prop, receiver) { |
|
return target[prop]; |
|
}, |
|
set(target, prop, receiver) { |
|
target[prop] = receiver |
|
} |
|
}); |
|
|
|
const proxyReflect = new Proxy({ |
|
name: 'Dana', |
|
age: 31 |
|
}, { |
|
get(target, prop, receiver) { |
|
return Reflect.get(target, prop, receiver); |
|
}, |
|
set(target, prop, receiver) { |
|
Reflect.set(target, prop, receiver); |
|
} |
|
}); |
|
|
|
const proxyArguments = new Proxy({ |
|
name: 'Dana', |
|
age: 31 |
|
}, { |
|
get(target, prop, receiver) { |
|
return Reflect.get(...arguments); |
|
}, |
|
set(target, prop, receiver) { |
|
Reflect.set(...arguments); |
|
} |
|
}); |
|
|
|
let count; |
|
// add tests |
|
suite |
|
.add("object", function () { |
|
object.name = 'Aschen M'; |
|
count = object.age + object.age; |
|
}) |
|
.add("proxy", function () { |
|
proxy.name = 'Aschen M'; |
|
count = proxy.age + proxy.age; |
|
}) |
|
.add("proxy Reflect", function () { |
|
proxyReflect.name = 'Aschen M'; |
|
count = proxyReflect.age + proxyReflect.age; |
|
}) |
|
.add("proxy with arguments", function () { |
|
proxyArguments.name = 'Aschen M'; |
|
count = proxyArguments.age + proxyArguments.age; |
|
}) |
|
// add listeners |
|
.on("cycle", function (event) { |
|
console.log(String(event.target)); |
|
}) |
|
.on("complete", function () { |
|
console.log("Fastest is " + this.filter("fastest").map("name")); |
|
}) |
|
// run async |
|
.run(); |