const calc = val => { | |
let c = 0; | |
for (let v = val; v; v >>>= 1) c += v & 1; | |
return val * 2 + val / 2 + c; | |
} | |
class A { | |
constructor(x) { this._value = x; } | |
set value(x) { this._value = x; } | |
get value() { return this._value; } | |
} | |
class B extends A { | |
set value(x) { super.value = x; } | |
get value() { return calc(super.value); } | |
} | |
const bench = (init, num) => { | |
let arr = []; | |
for (let i = 0; i != num; ++i) arr.push(new B(init)); | |
for (let i = 0; i != num; ++i) arr[i].value += i; | |
let sum = 0; | |
for (let i = 0; i != num; ++i) sum += arr[i].value; | |
}; | |
bench(2, 10000); | |
bench(1 << 30, 10000); | |
bench(42.2, 10000); | |
bench(42.5e10, 10000); |