Vplyv na výkon používania `push` vs `concat` vo veľkých poliach závisí od niekoľkých faktorov:
Porovnanie výkonnosti
1. Concat:
- Slow: Vytvorí sa nové pole, čo môže viesť k značnému využitiu pamäte a spomaleniu výkonu, najmä pri veľkých poliach.
- Príklad: Zreťazením dvoch polí s veľkosťou 10 000 každé z nich dosiahne „concat“ rýchlosť 0,40 ops/s, kým „push“ rýchlosť 378 ops/s[1].
2. Push:
- Rýchle: Upraví pôvodné pole na mieste, čo je vo všeobecnosti rýchlejšie a efektívnejšie z pamäte.
- Príklad: Presúvanie prvkov z jedného poľa do druhého, `push` funguje podstatne rýchlejšie ako `concat`[1].
Nemennosť a riadenie stavu
1. Nemennosť:
- Concat: Zaisťuje nemennosť vytvorením nového poľa, ktoré je nevyhnutné pre správu stavu v React a iných aplikáciách.
- Push: Zmutuje pôvodné pole, čo môže viesť k neočakávanému správaniu a chybám.
2. Správa štátu:
- Reagovať: Používa nemennosť, aby sa zabezpečilo správne zistenie a opätovné vykreslenie zmien stavu. `concat` zaisťuje nemennosť, vďaka čomu je vhodný pre aktualizácie stavu v React.
Osvedčené postupy
1. Použite „concat“ pre aktualizácie stavu:
- Pri aktualizácii stavu v React použite `concat`, aby ste zabezpečili nemennosť a zabránili neočakávanému správaniu.
2. Na zvýšenie výkonnosti použite funkciu „push“:
- V prípade aplikácií kritických z hľadiska výkonu použite príkaz `push` na úpravu pôvodného poľa na mieste.
3. Vyhnite sa mutačnému stavu:
- Vyhnite sa priamej mutácii stavu pomocou metód ako `push` alebo `splice`. Namiesto toho vytvorte nový objekt stavu s aktualizovanými hodnotami.
Záver
Stručne povedané, pokiaľ ide o veľké polia, `push` je vo všeobecnosti rýchlejší a pamäťovo efektívnejší, zatiaľ čo `concat` zabezpečuje nemennosť. Voľba medzi týmito dvoma metódami závisí od špecifických požiadaviek vašej aplikácie vrátane výkonu, riadenia stavu a nemennosti.
Citácie:[1] https://dev.to/uilicious/javascript-array-push-is-945x-faster-than-array-concat-1oki
[2] https://dev.to/uilicious/javascript-array-push-is-945x-faster-than-array-concat-1oki/comments
[3] https://stackoverflow.com/questions/25339803/javascript-concat-vs-push-benchmark
[4] https://news.ycombinator.com/item?id=19991339
[5] https://www.linkedin.com/pulse/merging-arrays-without-impacting-performance-gopesh-tiwari