JS 성능: 항상 배열을 사용해서는 안 됩니다.
6173 단어 performancejavascript
다음을 고려하세요:
const catsArray =
[ {name: 'Aeris', isFavourite: true}
, {name: 'Juri'}
, {name: 'Dante'}
, {name: 'Frankenstein'}
];
const findMyCat =
requestedCat =>
catsArray.find(({name}) => name === requestedCat);
findMyCat('Dante'); // {name: 'Dante'}
findMyCat('Marmalade'); // undefined
Dante를 찾고 싶습니다(실제 세계에서 흔히 발생하는 문제). 그러기 위해서는 먼저 Aeris가 Dante가 아닌지 확인해야 합니다. 그런 다음 Juri도 Dante가 아닌지 확인해야 합니다. 조금 이상하지만 괜찮습니다. 그리고 Marmalade라는 고양이가 있는지 확인하고 싶다면 먼저 모든 고양이를 확인해야 합니다. 흠.
내 데이터가 여기에서 좀 더 잘 표현될 수 있을까요?
const catsMap = new Map(
[ ['Aeris', { name: 'Aeris', isFavourite: true }]
, ['Juri', { name: 'Juri' }]
, ['Dante', { name: 'Dante' }]
, ['Frankenstein', { name: 'Frankenstein' }]
, ['Aeris', { name: 'Aeris' }]
]
)
const findMyCat =
requestedCat => catsMap.get(requestedCat)
findMyCat('Dante'); // {name: 'Dante'}
findMyCat('Marmalade'); // undefined
이제 다음에 Dante를 찾고 싶을 때, 그냥 그를 찾을 수 있습니다. 그가 있어야 할 것처럼 catsMap['Dante']에 있으면 찾을 것이고, 없으면 찾지 않을 것입니다. 하지만 도중에 다른 고양이를 보느라 시간을 낭비할 필요는 없습니다. . 내가 10,000마리의 고양이를 키울 때 이것이 가져올 차이를 상상해 보십시오. 그중 어느 것도 마멀레이드라고 불립니다. 방금 10,000(가상) 작업을 절약했습니다!
업데이트:
이 메시지를 여기에 게시하면 누군가가 더 나은 대안을 신속하게 제안할 것이라는 것을 알았으므로 지적해 주셔서 감사합니다Maps actually exist in JS now ! (나는 이것을 반영하기 위해 이 게시물의 예를 업데이트 했으므로 처음 읽는 경우 "이전"에 대해 걱정할 필요가 없습니다 :))
또한 원래 게시물에 설명된 두 가지 접근 방식의 차이점을 보여주는 다음 성능 테스트에 감사드립니다. <3
Reference
이 문제에 관하여(JS 성능: 항상 배열을 사용해서는 안 됩니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/nimmo/js-performance-perhaps-we-shouldnt-always-use-arrays-38ce텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)