История изменений
Исправление
fernandos,
(текущая версия)
:
➜ hyperfine "node func.js" "node c.js"
Benchmark 1: node func.js
Time (mean ± σ): 1.263 s ± 0.008 s [User: 1.258 s, System: 0.006 s]
Range (min … max): 1.247 s … 1.280 s 10 runs
Benchmark 2: node c.js
Time (mean ± σ): 1.331 s ± 0.007 s [User: 1.324 s, System: 0.005 s]
Range (min … max): 1.324 s … 1.344 s 10 runs
Summary
'node func.js' ran
1.05 ± 0.01 times faster than 'node c.js'
➜ cat func.js
let obj = {a: 10};
const hasF = function(object, key) {
return Object.prototype.hasOwnProperty.call(object, key);
}
for (let i = 0; i < 10 ** 8; i++) {
hasF(obj, 'a');
hasF(obj, 'b');
}
➜ cat c.js
let obj = {a: 10};
for (let i = 0; i < 10 ** 8; i++) {
obj.hasOwnProperty('a');
obj.hasOwnProperty('b');
}
Я даже два раза прогонял, те же 1.05.
Отличие функции от непосредственного вызова Object.prototype.hasOwnProperty.call в районе погрешности. (было бы странно, если бы было иначе).
Исходная версия
fernandos,
:
➜ hyperfine "node func.js" "node c.js"
Benchmark 1: node func.js
Time (mean ± σ): 1.263 s ± 0.008 s [User: 1.258 s, System: 0.006 s]
Range (min … max): 1.247 s … 1.280 s 10 runs
Benchmark 2: node c.js
Time (mean ± σ): 1.331 s ± 0.007 s [User: 1.324 s, System: 0.005 s]
Range (min … max): 1.324 s … 1.344 s 10 runs
Summary
'node func.js' ran
1.05 ± 0.01 times faster than 'node c.js'
➜ cat func.js
let obj = {a: 10};
const hasF = function(object, key) {
return Object.prototype.hasOwnProperty.call(object, key);
}
for (let i = 0; i < 10 ** 8; i++) {
hasF(obj, 'a');
hasF(obj, 'b');
}
➜ cat c.js
let obj = {a: 10};
for (let i = 0; i < 10 ** 8; i++) {
obj.hasOwnProperty('a');
obj.hasOwnProperty('b');
}
Я даже два раза прогонял, те же 1.05.