Разница в производительности между Object.defineProperty () и Object.defineProperties () - PullRequest
0 голосов
/ 19 апреля 2019

Я ищу основные различия между этими двумя методами.

На некоторых сайтах упоминались проблемы с читабельностью, но моя проблема в основном связана с производительностью. Похоже, defineProperty () работает быстрее, но я не могу понять, почему.

var FOR_TIME = 10000;


console.time("prop");
for(var i = 0; i < FOR_TIME; i++) {
    var test = {};
    Object.defineProperty(test, "ba", {});
    Object.defineProperty(test, "bab", {});
    Object.defineProperty(test, "bac", {});
}
console.timeEnd("prop");

console.time("props");
for(var i = 0; i < FOR_TIME; i++) {
    var test = {};
    Object.defineProperties(test, {
        a: {},
        ab: {},
        ac: {}
    })
}
console.timeEnd("props");

Вот результат результатов консоли: (выполнено 3 раза)

1- prop: 9.251ms props: 17.034ms
2- prop: 10.050ms props: 22.443ms
3- prop: 11.013ms props: 17.086ms

Используемая версия узла: v10.15.0

1 Ответ

2 голосов
/ 19 апреля 2019

Вы могли бы прочитать эталонный тест как: «О, defineProperty более чем в два раза быстрее».

Или вы могли бы прочитать это как: «Даже defineProperties требует только 20 мсек для 10.000 итераций, что означает, что это вообще не вызовет никаких проблем, если только вы не создаете миллионы экземпляров в цикле, который выполняется тысячи раз. «

...