Run details:
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.0.0 Safari/537.36
Chrome 102
Mac OS X 10.15.7
Desktop
2 years ago
Test name Executions per second
setNumber 13312209.0 Ops/sec
setCall 6746080.5 Ops/sec
setTypecheck(num) 13313842.0 Ops/sec
setTypecheck(call) 6710818.5 Ops/sec
Script Preparation code:
x
 
var obj = { a:1 }
function setNumber(key, value) {
  obj[key] = value;
}
function setCall(key, getValue) {
  obj[key] = getValue(obj);
}
function setTypecheck(key, value) {
  obj[key] = typeof value === "number" ? value : value(obj);
}
function getValue() {
  return 100;
}
Tests:
  • setNumber

     
    setNumber("a", 100);
  • setCall

     
    setCall("a", getValue);
  • setTypecheck(num)

     
    setTypecheck("a", 100);
  • setTypecheck(call)

     
    setTypecheck("a", getValue);