Деструктура объекта против присвоения (производительность) - PullRequest
0 голосов
/ 04 февраля 2020

Я думал о выполнении деструктуры объекта по сравнению с присваиванием. Я сделал простой тест:

const ITERATIONS = 999999;

const simpleObj = { a: 1, b: 2, c: 3 };
const newSimpleObj = { d: 4 };


const s1 = new Date().getTime();
for (let i = 0; i < ITERATIONS; ++i) {
    const n = Object.assign({}, simpleObj, newSimpleObj);
}
console.log('End1:', new Date().getTime() - s1);


const s2 = new Date().getTime();
for (let i = 0; i < ITERATIONS; ++i) {
    const n = { ...simpleObj, ...newSimpleObj };
}
console.log('End2:', new Date().getTime() - s2);

Я правильно это делаю? В этом тесте End1 показывает 172 мс, а End2 показывает 138 мс. Это действительно просто, и я думаю, что в более сложных функциях это может иметь большее значение. Я не смог найти ни одной статьи с оценками или утверждениями, которые могли бы доказать, что использование деструктуризации по сравнению с методом присвоения имеет преимущества. Есть ли другие преимущества или недостатки этого решения, такие как эффективность памяти, качество кода или подобное?

ОБНОВЛЕНИЕ: Я попытался http://jsben.ch/, и он показал, что assign быстрее, но https://jsbench.me/ продемонстрировал почти 45% преимущества от деструктуризации объекта.

1 Ответ

0 голосов
/ 04 февраля 2020

Вы можете увидеть тест, который проводился на FireFox: https://www.measurethat.net/Benchmarks/ShowResult/57602

В этом тесте assign выиграл. enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...